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

时间:2019-02-19 04:56:02

标签: java exception using

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

try{
    // some error-prone code
   }catch(Exception e){
   }

try{
    // some error-prone code
   }catch(NullPointerException n){
   }catch(ArrayOutOfBoundException a){
   } ..... etc

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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