gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:26:24 25 4
gpt4 key购买 nike

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

ManagedExceptionEnvironment() {
// The code that might throw exceptions
}

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

我最初的想法是让 ManagedExceptionEnvironment 的构造函数采用 Runnable,但是如果您将可能抛出异常的逻辑放入匿名 Runnable run 方法然后它仍然提示没有实现 try/catch 即使你传递它的容器会已经照顾好了。

我想另一种选择是只在最高级别处理错误,并让它们不断被抛出到另一个级别,尽管这看起来相当冒险。

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

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

最佳答案

除非ManagedExceptionEnvironment打算扩展一些现有的类,这里使用 Java 类而不是 static 没有任何值(value)方法。所以,你可以这样写:

public static <T> T boomProtector(Callable<T> thingThatMightGoBoom) {
try {
return thingThatMightGoBoom.call();
}
catch(Exception e) {
// TODO: your standard catch logic
}

return null;
}

然后,在你需要的地方,你可以调用:

Whatever result = boomProtector(() -> earthShatteringKaboom());

哪里WhateverearthShatteringKaboom() 的类型返回。如果earthShatteringKaboom()返回一个对象,你在 result 中得到它.如果它抛出异常,则执行您的标准捕获逻辑并且 resultnull .

(注意:我正在展示示例 boomProtector() 调用的 Java 8 语法,您需要在您的项目中启用它,例如在 Android Studio 中通过文件 > 项目设置 > 应用程序——或者,使用匿名内部类Callable<T> 的实现

关于java - 在 Java 中创建异常安全执行包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51910838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com