这本书是从JDK源码注释阅读鼓捣来的,最近对exception产生了兴趣,看一下这位大牛都说了些什么?
(Item 39- 47 论述了有关exception的那点事 )
Item 39:Use exceptions only for exceptional conditions
只有在例外的情况下才能使用例外
Q:?
-----------------
Item 40:Use checked exceptions for recoverable conditions andrun-time exceptions for programming errors
对可恢复情况使用受检查例外,对程序错误使用运行时例外。
Q:怎样判断是可恢复情况以及程序错误?
--------------------------
Item 41:Avoid unnecessary use of checked exceptions
避免不必要的检查异常。
Q:什么是检查异常(checked exceptions)?
A:先来看一下异常机制的一个鸟瞰:
异常类Exception又分为运行时异常(RuntimeException)和非运行时异常(上图没有标出),这两者有时候又称为检查异常和非检查异常。如果可以从一个异常中恢复过来,就声明该异常是检查异常(checked exception),故而有这么一说:检查异常一般是不定义的。反言之,如果不能从该例外中做任何有助于恢复的动作,该例外就是个未检查异常(unchecked exception),就是必须处理的异常,不处理程序就不能编译过去,比如IOException, SQLException这些用户自定义的异常。
--------------------------
Item 42:Favor the use of standard exceptions
习惯于使用标准例外
Q:有哪些所谓标准例外?
A:
---------
Item 43: Throw exceptions appropriate to the abstraction
将例外抛到适宜的抽象层次
Q:怎样控制错误链中例外抛出的长度?
---------
Item 44:Document all exceptions thrown by each method
对每个方法的例外抛出要给出文档
------------------------------
Item 45:Include failure-capture information in detail messages
在底层消息中把失效捕获信息包括进来。
Q:什么是失效捕获信息?
------------------------------
Item 46:Strive for </vetbfailure atomicity
Q:?
---
Item 47:Don't ignore exceptions
不要忽略例外
Q:如果例外是自己抛出的,应该不会忽略,如果是系统抛出的,怎么做才能不忽略呢?