我只是在编写代码,想知道使用异常类捕获异常还是使用多种类型的try-catch是否有益。
try{
// some error-prone code
}catch(Exception e){
}
或
try{
// some error-prone code
}catch(NullPointerException n){
}catch(ArrayOutOfBoundException a){
} ..... etc
答案 0 :(得分:1)
这取决于您对异常的处理方式。如果每个异常都有特定的事情要做,那么您可以使用多个try catch。如果没有,您可以使用通用异常。另外,如果您知道哪种异常可能会更好地抛出代码,则只需使用该特定异常即可。
答案 1 :(得分:0)
您应该只捕获知道如何正确处理的异常;示例包括IOException
,您可以在其中执行重试操作,返回默认值或重新抛出错误等操作;和NumberFormatException
,您尝试将用户输入读取为数字并发现它是垃圾,因此您可以要求用户重试。
在几乎所有情况下,您实际上都不知道对“任何错误”的正确响应是什么,并且在许多情况下(例如,大多数未经检查的异常),捕获{{ 1}}掩盖了一些需要解决的潜在问题。通常,对于任何适用于“当前操作”的定义,通用的未知异常唯一可接受的响应是“编写日志消息并中止当前操作”(可能包括回滚事务和返回HTTP 503状态之类的事情)代码)。
在实际的应用程序中,此最后一种方法Exception
由框架代码(例如Spring或Jersey)处理,并执行这些广泛的清理操作。如果您的代码不能做任何更好的事(通常需要知道具体发生了什么,而不仅仅是“异常”),那么它应该让异常传播并使用标准错误处理程序。