鱼有胖的头

导航

Effective JAVA 中有关Exception的几条建议

这本书是从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:如果例外是自己抛出的,应该不会忽略,如果是系统抛出的,怎么做才能不忽略呢?

posted on 2011-07-05 16:33  鱼有胖的头  阅读(383)  评论(0编辑  收藏  举报