在通常的情况下,程序很少会自行抛出异常,因为异常的类名通常也包含了该异常的有用的信息。所以在选择抛出异常的时候,应该选择合适的异常类,从而可以明确的描述该异常的情况。在这种情形下,应用程序常常需要抛出自定义异常。
用户的自定义异常,常常都应该继承Exception类,如果需要自定义Runtime异常,则应该继承RuntimeException基类。定义异常类的时候通常需要提供两个构造器:一个是无参数的构造器,另一个是带字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方法的返回值)
下面的例子程序创建了一个自定义异常类
public class AuctionException extends Exception{
//无参数的构造器
public AuctionException(){};
//带一个字符串
public AuctionException(String msg){
super(msg)
}
}
上面的程序创建了AuctionException异常类,并且为该类提供了两个构造器。尤其是那个带字符串参数的构造器,其执行体也非常的简单,仅仅通过super来调用父类的构造器。正是这行super调用可以将此字符串参数传给异常对象的message属性,该message属性就是该异常对象的详细描述信息
如果需要自定义Runtime异常,只需要将AuctionException.java中的Exception基类改为RuntimeException基类,其他地方无需修改。
以上代码已经可以应用到大多数的自定义异常的情况,在我们实际应用中可以借助于上述代码完成自定义异常。