Java何时捕获常规异常和特定异常

时间:2015-11-01 20:18:23

标签: java performance exception try-catch

我总是使用catch(Exception e){// whatever}但实际上是否正确?如果一般Exception适用于所有内容,为什么我应该使用特定的例外?它会以某种方式影响性能吗?

1 个答案:

答案 0 :(得分:4)

  

我总是使用catch(Exception e){// whatever}但实际上是否正确?

没有。这违背了建议,以捕捉最合适的特定例外。

  

如果一般的Exception适用于所有内容,为什么要使用特定的异常?

因为您实际上并不期望的异常可以被掩盖。 例如,在执行某些数据库操作时, 可能会发生SQLException,这是预期的, 并且您可以优雅地实施它。 如果ArrayIndexOutOfBoundsException被抛出, 这将是意外的,并且很可能表示编程错误。 但如果改为SQLException,你会抓住Exception, 然后你可能永远不会知道意外的ArrayIndexOutOfBoundsException被抛出。 优雅的清理也可能不适用于这种例外。

使用特定的异常也使代码更具可读性: 读者可以理解try-catch守护的代码中可能出现的问题。

与此相关的是,当您声明一个抛出异常的方法时, 声明应该使用最适合抽象的异常。

  

它会以某种方式影响性能吗?

完全没有。