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
异常的类名即可,让该异常类的类名可以准确描述该异常。