《Effective Java》读书笔记八(异常)

No57 只针对异常的情况才使用异常

异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。

No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常

Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception)、运行时异常(run-time exception)和错误(error)。

  1. 如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。
  2. 用运行时异常来表明编程错误。例如:数组访问下标越界。
  3. 错误往往被JVM保留用于表示资源不足、约束失败,或者其它使程序无法继续执行的条件。

No60 优先使用标准的异常

表60 常用的异常

异常

使用场合

IllegalArgumentException

非null的参数值不正确

IllegalStateException

对于方法调用而言,对象状态不合适

NullPointerException

在禁止使用null的情况下数值为null

IndexOutOfBoundsException

下标参数值越界

ConcurrentModificationException

对禁止并发修改的情况下,检测到对象的并发修改

UnsupportOperationException

对象不支持用户请求的方法

No62 每个方法抛出的异常都要有文档

始终要单独地声明受检的异常,并且利用Javadoc的@throws标签标记,准确地记录下抛出每个异常的条件。

No63 在细节消息中包含能捕获失败的信息

为了捕获失败,异常的细节信息应该包含所有“对该异常有贡献”的参数和域的值。例如:IndexOutOfBoundsException异常的细节消息应该包含下界、上界以及没有落在界内的下标值。

No65 不要忽略异常

如果有空的catch块,至少,此catch块也应该包含一条说明,解释为什么可以忽略这个异常。

posted @ 2013-08-10 14:21  那些年的事儿  阅读(392)  评论(0编辑  收藏  举报