【发布时间】:2012-07-16 18:20:58
【问题描述】:
考虑以下 Java 代码:
try{
// do something
// this piece of code throws several checked exceptions.
} catch (IllegalArgumentException e) {
handleException(e);
} catch (IllegalAccessException e) {
handleException(e);
} catch (InvocationTargetException e) {
handleException(e);
} catch (InstantiationException e) {
handleException(e);
} catch (NoSuchMethodException e) {
handleException(e);
} catch (IOException e) {
handleException(e);
} catch (NoSuchFieldException e) {
handleException(e);
}
try 块中的代码抛出了几个检查异常。我要做的就是在发生异常时记录一条消息(使用一些自定义消息字符串)。 IE。对于所有异常,我的异常处理逻辑是相同的。
我觉得上面的代码看起来不太好(更多的 LOC 和降低的可读性)。
有没有更好的方法来处理这种情况?
以下解决方案不是最佳实践,因此不推荐(按 Check 样式)。
try{
// do something very bad
} catch (Exception e) {
handleException(e);
}
【问题讨论】:
-
使用 Java 7 可以聚合异常。捕获
Exception本身并不错,平等地处理所有Exception实例。 -
您不应盲目遵循最佳实践。每个最佳实践都有反例。在这种情况下,如果您确定不会轻易更改异常处理,我认为使用单个通用 catch 是合理的。
-
查看 marco 方法。你通过一个好的实践来解决问题......如果你只捕获异常,你会掩盖未检查的异常。这不是做最佳实践的反例。
标签: java exception exception-handling