10.4.2 自定义异常类

10.4.2 自定义异常类

在通常情况下,程序很少会自行抛出系统异常,因为异常的类名通常也包含了该异常的有用信息。所以在选择抛出异常时,应该选择合适的异常类,从而可以明确地描述该异常情况。在这种情形下,应用程序常常需要抛出自定义异常。
用户自定义异常都应该继承Exception基类,如果希望自定义Runtime异常,则应该继承RuntimeException基类。

定义异常类通常需要提供两个构造器

定义异常类时通常需要提供两个构造器:

  • 一个是无参数的构造器;
  • 另一个是带个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方法的返回值)。

下面例子程序创建了一个自定义异常类。

1
2
3
4
5
6
7
8
9
10
public class AuctionException extends Exception
{
// 1.提供无参数的构造器
public AuctionException(){} //①
// 2.提供带一个字符串参数的构造器
public AuctionException(String msg) //②
{
super(msg);
}
}

上面程序创建了AuctionException异常类,并为该异常类提供了两个构造器。尤其是②号代码部分创建的带一个字符串参数的构造器,其执行体也非常简单,仅通过super来调用父类的构造器,正是这行super调用可以将此字符串参数传给异常对象的message属性,该message属性就是该异常对象的详细描述信息。
如果需要自定义Runtime异常,只需将AuctionException.java程序中的Exception基类改为RuntimeException基类,其他地方无须修改。

在大部分情况下,创建自定义异常都可采用与AuctionException.java相似的代码完成只需改变AuctionException异常的类名即可,让该异常类的类名可以准确描述该异常