使用异常或使用多个try catch Java

Using exception or using multiple try catch java

我只是在编写代码,想知道使用异常类来捕获异常还是使用多种类型的try-catch是否有益。

1
2
3
4
try{
    // some error-prone code
   }catch(Exception e){
   }

1
2
3
4
5
try{
    // some error-prone code
   }catch(NullPointerException n){
   }catch(ArrayOutOfBoundException a){
   } ..... etc


您应该只捕获知道如何正确处理的异常;示例包括IOException,您可以在其中执行诸如重试操作,返回一些默认值或重新引发错误之类的操作; NumberFormatExceptionNumberFormatException,您尝试在其中将用户输入读取为数字并发现它是垃圾,因此您可以要求用户重试。

在几乎所有情况下,您实际上都不知道对"任何错误"的正确响应是什么,并且在许多情况下(例如,大多数未经检查的异常),您唯一要做的就是捕获掩盖了一些需要解决的潜在问题。通常,对于任何适用于"当前操作"的定义,通用的未知异常唯一可接受的响应是"编写日志消息并中止当前操作"(可能包括回滚事务和返回HTTP 503状态之类的事情)代码)。

在现实世界的应用程序中,最后一种catch Exception由框架代码(例如Spring或Jersey)处理,并执行这些广泛的清理操作。如果您的代码不能做得更好(通常需要知道具体发生了什么,而不仅仅是"异常"),那么它应该让异常传播并使用标准的错误处理程序。


这取决于您对异常的处理方式。如果每个异常都有特定的事情要做,那么您可以使用多个try catch。如果没有,您可以使用通用异常。同样,如果您知道哪种异常可能会更好地抛出代码,则只需使用该特定异常即可。