代码重用,是程序员们“千百年来”所追求的目标,同样Exception也是代码,也该尽量被重用。所以,应该尽量使用标准的异常,而不是轻易地使用自造的异常。
很多的类库都定义了自己的异常,我本人所参与设计的几个项目大多数也有自己的异常。但这些异常都是仅适用于项目自身的某些情形的,换个角度说,就是这些情形下没有太合适的标准异常来表示,加之自造异常还可以做某些处理,如信息的反馈,日志、错误消息的封装等。
但是,当那些常见的“低级”错误发生时,应使用相应的“定式”。记住以下标准异常吧:
IllegalArgumentException | 参数的值不合适。方法的开始处的参数检查,一旦有问题就该抛出这个 |
IllegalStateException | 对于这个方法调用而言,对象状态不合适。同样也是开始处检查 |
NullPointerException | 空指针 |
IndexOutOfBoundsException | 下标越界 |
ConcurrentModificationException | 禁止并发的情况下,被检查到并发的修改 |
UnsupportedOperationException | 不支持这种方法,如接口/抽象父类中已经定义,但尚未实现的方法 |
利用类库中现有的异常是被提倡的。但有一个重要的原则,就是你使用的场景一定要复合这个异常在文档中所描述的条件。
【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208