不要直接重用Exception、RuntimeException、Throwable或者Error,因为他们可能是一个方法抛出的其他异常的超类
最常见的可重用异常
IllegalArgumentException 非null的参数值不正确 IllegalStateException 不适合方法调用的对象状态 NullPointerException 在禁止使用null的情况下参数值为null IndexOutOfBoundsException 下标参数值越界 ConcurrentModificationException 在禁止并发修改的情况下,检测到对象的并发修改 UnsupportedOperationException 对象不支持用户请求的方法
更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常(异常转译)(捕获一个异常,然后可以自己选择一个合适的异常抛出)
- // Exception Translation
- try {
- ... // Use lower-level abstraction to do our bidding
- } catch (LowerLevelException e) {
- throw new HigherLevelException(...);
- }
- try{
- }catch(Exception ignored){
- }