如何编写和应用Java的自定义异常类

 

11.7.1 编写自定义异常类的模式
编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下:
 
public class CustomException extends Exception {    //或者继承任何标准异常类
    public CustomException() {}                //用来创建无参数对象
    public CustomException(String message) {        //用来创建指定参数对象
        super(message);                             //调用超类构造器
    }
}
 
当然也可选用Throwable作为超类。其中无参数构造器为创建缺省参数对象提供了方便。第二个构造器将在创建这个异常对象时提供描述这个异常信息的字符串,通过调用超类构造器向上传递给超类,对超类中的toString()方法中返回的原有信息进行覆盖。
来讨论一个具体例子。假设程序中需要验证用户输入的表示年龄的数据必须是正整数值。我们可以按照以上模式编写这个自定义异常类如下:
 
public class NegativeAgeException extends Exception {
                                            //或者:extends Throwable
    public NegativeAgeException() {}
    public NegativeAgeException(String message) {
        super(message);
    }
}
 
下面是应用这个自定义异常类的例子:
 
//完整程序存在本书配套资源目录为Ch11中名为NegativeAgeExceptionTest.java
...
try{
   String ageString = JOptionPane.showInputDialog("Enter your age: ");
 
   if (Integer.parseInt(ageString) < 0)
        throw new NegativeAgeException("Please enter a positive age");
   else
        JOptionPane.showMessageDialog(null, ageString, "Age", 1);
}
catch(NegativeAgeException e){
皖ICP备07503261号