Effective Java阅读笔记-item异常
Dreamhead把他用大把银子买来的“Effective Java”借给我阅读,我真是很感动亚,我只能用行动来感谢Dreamhead了。^_^
39、只针对不正常的条件才使用异常
异常只应该被用于不正常的条件,它们永远不应该被用于正常的控制流。
40、对于可恢复的(recoverable conditions)使用被检查异常(checked exceptions),对于程序错误(error)使用执行期异常(runtime exceptions)
Java中大致分为两种不正常状态:checked exception(被检查异常) and error(错误,一般抛出的runtime-exception也都是error的表现,所以我把runtime exceptions也划归为error)。
- 如果期望调用者能够恢复,那么对于这样的条件应该使用被检查的异常。
- 用运行时异常来指明程序错误。
大多数运行时异常都是表明API的客户没有遵守API规范建立的约定。建议你所实现的所有的unchecked exceptions都应该是RuntimeException的子类(直接或间接的)。
42、尽量使用标准的异常
Java平台库提供了一组基本的unchecked exceptions,它们覆盖了绝大多数的API抛出异常的需要。
常用的异常复习:
IllegalArgumentException 在参数的值不合适时抛出。
IllegalStateException 对于这个方法而言,对象状态不合适。
NullPointerException 参数值为null
IndexOutOfBoundsException 下标越界
UnsupportedOperationException 对象不支持用户要求的方法。
CocurrentModificationException 在禁止并发修改时,对象检测到并发修改
46、努力保持 failure atomicity (失败之原子性)
解释一下失败原子性的概念:即一个失败的方法调用应该使对象保持“它在被调用之前的状态”。这样的方法被称为具有“失败原子性”的方法。
使用“不可变”对象是获取“失败原子性”的最常见的办法。
47、不要忽略异常
忽略一个异常方法很简单:
try{
//….
}catch(SomeException e){
//empty block
}
空的catch块儿会使异常达不到应有的目的。至少在catch block中应该包含一条说明,用来解释为什么忽略掉这个异常是合适的。
© 2004, bigwhite. 版权所有.
Related posts:
评论