在Java中处理几个异常

Vee*_*era 12 java exception-handling exception

请考虑以下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);
}
Run Code Online (Sandbox Code Playgroud)

try块中的代码会抛出几个已检查的异常.我想要做的就是在发生异常时记录消息(带有一些自定义消息字符串).即我的异常处理逻辑对于所有异常都是相同的.

我觉得上面的代码看起来不太好(更多LOC和可读性降低).

有没有更好的办法处理此类案件?

以下解决方案不是最佳实践,因此不推荐(通过检查样式).

try{
    // do something very bad
} catch (Exception e) {
    handleException(e);
} 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 16

在Java 6中,您没有比您已经建议的更具吸引力的选项.

但是Java 7有一个可以使用的多捕获语句:

catch(IllegalArgumentException | IllegalAccessException | IOException exception) {
    handleException(e);
}
Run Code Online (Sandbox Code Playgroud)


Ego*_*gor 6

我觉得在你的情况下第二个选项会做得很好.如果异常处理对于每种情况都相同,则无需使代码过度复杂化.

  • 这样,您将屏蔽所有未经检查的异常.当你做那种事时,上帝会哭. (4认同)