【发布时间】:2010-12-29 15:23:41
【问题描述】:
我正在清理我的一些代码,但我不确定哪条路线会更好。
目前,我的大部分方法都有一个 try catch 块,它在最后处理一些单独的异常,但我认为拥有更多的 try catch 块会更好地进行维护。然而,在分解代码时,我发现我正在为同一类型的异常编写多个块。我可以看到为每个部分编写一个块的好处,因为我可以详细说明它失败的原因。
我的问题是……这样做有缺点吗?会不会有性能问题或其他一些我没有看到的隐藏怪物?
另外,在一个方法中处理多个异常的首选方法是什么,是否有行业标准?
为了更好地说明我的观点,这里有一些伪代码
//multiple try catch for same exception
try {
//some code here
} catch (MyException e) {
//specific error message here
}
try {
//some different code here
} catch (MyException e) {
//more specific error message indicating a different issue
}
【问题讨论】:
-
似乎你觉得你需要为每个抛出的异常写一条错误消息,接近它被抛出的地方。但为什么?通常唯一重要的信息是整个操作失败了。
-
@Raedwald:我觉得添加更多关于操作失败原因的信息对于在我之后工作的人的维护很有用。我正在使用一些开源插件,因此对于不了解它们的人,我可以添加更多细节。
-
这就是日志记录如此重要的原因,Shaded。如果正如 Raedwalk 所建议的那样,无论如何恢复都是无望的,那么您不必加载带有特定错误处理的代码。我的一般技术是记录我认为重要的任何内容并重新抛出异常。事实上,如果错误是无望的,我会重新抛出一个运行时异常并在最高级别捕获它以进行最终清理。
-
在大多数情况下,堆栈跟踪和异常对象的字符串表示应该足以为维护程序员指明正确的方向。他们可以访问源代码,因此没有任何理由重复可以从那里收集的信息。
-
这能回答你的问题吗? Multiple try-catch or one?
标签: java exception-handling coding-style