创建异常类

当面对选择抛出什么类型的异常,你可以使用一种由别人写的异常——Java平台提供了大量的异常类供你使用——或者你也可以写一个你自己的异常类型。如果符合下面几个条件之一,你就应该创建自己的异常类型,反之你应该用别人写的。
  • 你是否有一个异常类型,Java平台里面的异常类型都不能描述它?
  • 它是否可以帮助用户区分这个异常类型是你的还是其他供应商的?
  • 你的代码中是否会抛出多种相关的异常?
  • 如果你用了别人的异常类型,用户是否有权限访问这些异常?也就是,你的代码包是不是独立的?
 
一个例子
 
假如你写了一个linked list类,这个类支持下面的方法:
  • objectAt(int n) — 返回列表中第n个对象。如果参数小于0或者大于列表当前还有的对象个数,就抛出异常
  • firstObject() — 返回列表中的第一个对象。如果列表中没有任何对象,就抛出异常
  • indexOf(Object o) — 在列表中搜索指定的对象,并返回对象所在的位置。如果这个对象不再list中,就抛出异常
 
这个linked list类可以抛出多种异常。如果能用一个异常处理器就可以处理所有这个类可能抛出的异常,就很方便了。当然,如果将你的linked list类打包发布到一个包里面,所有相关的代码都应该打包在一起。这样的话,linked list应该提供自己的一套异常类型。
 
下图展示了一种可能的类层级结构,这些类都是linked list抛出的异常类型:

            示例异常类层级结构

选一个父类
 
理论上所有Exception的子类都可以当做LinkedListException的父类。然而,一眼看过去,它们要么看起来太专业,要么看起来完全和LinkedListException无关。因此,LinkedListException的父类应该是Exception。
 
大部分你写的applets和应用都只抛出Exception。Error通常只用在系统中发生重大的或者硬故障性的问题时,比如那些阻止JVM运行的问题。
 
注意:为了使代码更易读,所有继承(直接或间接)于Exception类的子类的名称都应该以“Exception”为后缀。

原文地址

转自:http://leaforbook.com/blog/jexception/translate/creating.html

原文地址:https://www.cnblogs.com/hihtml5/p/6505956.html