分别捕捉不同的例外有什么好处吗?

Fel*_*lix 1 java exception-handling exception

除了以不同方式处理不同异常的明显情况之外,单独处理异常是否有任何好处?我看到很多代码看起来像以下几行:

try {
    doSomethingThatMayThrowExceptions();
} catch (SomeException e) {
} catch (OtherException e) {
}
Run Code Online (Sandbox Code Playgroud)

Exception当我只有一个异常处理过程时,我总是倾向于捕获泛型.

一个派生的问题是:它是否更好地说明你正在捕获的确切类型的异常,如果它只是一个?例如:

try {
    number = Integer.parseInt(numberString);
} catch (Exception e) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,try块只能抛出一个NumberFormatException.在Exception这里捕捉通用是否有任何缺点?

Kim*_*imi 5

在上面的示例中,try块只能抛出NumberFormatException.在这里捕获通用异常是否有任何缺点?

并不是的.但可以问一下,你通过"隐藏"确切的异常来实现什么目标?

如果你抓住了NumberFormatException,你可以立即看到预期会抛出哪些异常.

编辑:原谅我.上面的例子也可以抛出未经检查的异常,即.NPE,所以你实际上捕获更多异常并以同样的方式对待它们.实际上,您可能希望为这些异常实现不同的异常处理(如果您甚至想要捕获和处理未经检查的异常).