10.4.2 自定义异常类
10.4.2 自定义异常类
在通常情况下,程序很少会自行抛出系统异常,因为异常的类名通常也包含了该异常的有用信息。所以在选择抛出异常时,应该选择合适的异常类,从而可以明确地描述该异常情况。在这种情形下,应用程序常常需要抛出自定义异常。
用户自定义异常都应该继承Exception基类,如果希望自定义Runtime异常,则应该继承RuntimeException基类。
定义异常类通常需要提供两个构造器
定义异常类时通常需要提供两个构造器:
- 一个是无参数的构造器;
- 另一个是带个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的
getMessage()方法的返回值)。
下面例子程序创建了一个自定义异常类。
1 | public class AuctionException extends Exception |
上面程序创建了AuctionException异常类,并为该异常类提供了两个构造器。尤其是2号代码部分创建的带一个字符串参数的构造器,其执行体也非常简单,仅通过super来调用父类的构造器,正是这行super调用可以将此字符串参数传给异常对象的message属性,该message属性就是该异常对象的详细描述信息。
如果需要自定义Runtime异常,只需将AuctionException.java程序中的Exception基类改为RuntimeException基类,其他地方无须修改。
在大部分情况下,创建自定义异常都可采用与AuctionException.java相似的代码完成只需改变AuctionException异常的类名即可,让该异常类的类名可以准确描述该异常。