Java 异常

236 阅读1分钟

不要滥用异常

比如循环访问一个数组,当这个循环企图访问数组边界之外的第一个数组元素时,用try-catch-忽略ArrayIndexOutOfBoundsException的手段来达到终止无限循环的目的。
异常值应该用于异常的情况下,不应该用于正常的控制流。

异常分类

  • 受检异常(checked exception)
  • 运行时异常(run-time exception)
  • 错误(error)

当期望调用者能够适当的恢复,对于这种情况应当使用受检异常。 用运行时异常表示编程错误。

  • 未受检异常的抛出结构都应该是RuntimeException的子类。
  • 受检异常的抛出结构都应该是Exception的子类。

如果调用者无法恢复失败,就应该抛出未受检异常。如果可以恢复,并且想要迫使调用者处理异常的条件,首选应该返回一个Optional值。当且仅当万一失败时,这些无法提供足够的信息,才应该抛出受检异常.

参考资料: