当面对选择抛出什么类型的异常,你可以使用一种由别人写的异常——Java平台提供了大量的异常类供你使用——或者你也可以写一个你自己的异常类型。如果符合下面几个条件之一,你就应该创建自己的异常类型,反之你应该用别人写的。

一个例子

假如你写了一个linked list类,这个类支持下面的方法:

这个linked list类可以抛出多种异常。如果能用一个异常处理器就可以处理所有这个类可能抛出的异常,就很方便了。当然,如果将你的linked list类打包发布到一个包里面,所有相关的代码都应该打包在一起。这样的话,linked list应该提供自己的一套异常类型。

下图展示了一种可能的类层级结构,这些类都是linked list抛出的异常类型:

示例异常类层级结构



选一个父类

理论上所有Exception的子类都可以当做LinkedListException的父类。然而,一眼看过去,它们要么看起来太专业,要么看起来完全和LinkedListException无关。因此,LinkedListException的父类应该是Exception。

大部分你写的applets和应用都只抛出Exception。Error通常只用在系统中发生重大的或者硬故障性的问题时,比如那些阻止JVM运行的问题。

注意:为了使代码更易读,所有继承(直接或间接)于Exception类的子类的名称都应该以“Exception”为后缀。





原文地址