首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中创建异常安全执行包装器

在Java中创建异常安全执行包装器
EN

Stack Overflow用户
提问于 2018-08-19 00:59:05
回答 3查看 1.3K关注 0票数 2

我用try/catch编写了很多代码,几乎在所有情况下我都会采取相同的操作。我想要做的是通过创建一些东西来简化我的错误处理,我可以这样说

代码语言:javascript
运行
复制
ManagedExceptionEnvironment() {
    // The code that might throw exceptions
}

然后在ManagedExceptionEnvironment内部,它拥有共享的错误处理逻辑。

我最初的想法是让ManagedExceptionEnvironment的构造函数接受一个Runnable,但是如果你把可能抛出异常的逻辑放在匿名Runnablerun方法中,那么它仍然会抱怨没有实现try/catch,即使你传递给它的容器可以处理它。

我认为另一种选择是只在最高级别处理错误,并让它们不断被抛出另一个级别,尽管这似乎相当有风险。

编辑:我猜这里的一个选项(我不知道这是不是Java中的东西)是某种宏?

编辑2:我粗略地读了一下关于使用C预处理器将宏注入Java src的内容,这真的很可怕。所以宏作为一种解决方案出现了。

EN

Stack Overflow用户

发布于 2018-08-19 01:07:19

将其封装在如下的接口中如何:

代码语言:javascript
运行
复制
class ManagedExceptionEnvironment {
    public static void safeExecution(Wrapper w) {
        try {
            w.codeThatThrows();
        } catch (Exception e) {
            // your error handling
        }
    }


    public static void example() {
        safeExecution(() -> { throw new Exception(); });
        // Or the old-fashioned way:
        safeExecution(new Wrapper() {
            @Override
            public void codeThatThrows() throws Exception {
                throw new Exception();
            }
        });
    }

    interface Wrapper {
        public void codeThatThrows() throws Exception;
    }
}

诀窍是类似于Runnable.run()的方法指定它可能抛出异常,而run()不抛出异常。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51910838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档