有时候,系统提供的异常类也难以满足开发的需求,就需要自己定义异常类。定义方法为:
class 异常类名 extends Exception{
//异常类主体
}
所有的异常类都继承自Exception,都具备Exception的属性和方法
class defaultException extends Exception{ //自定义异常类
public defaultException(String s){ //自定义异常了的构造方法
super(s); //调用父类Exception的构造方法,并传入参数s
}
}
public class testException2{ //测试类
public static void main(String[] args){
try{ //测试异常
throw new defaultException("cuowu"); //直接抛出异常,用自定义异常类的类型new一个异常对象,把此对象抛出
}catch(Exception e){ //捕捉此抛出的对象,并赋给Exception的对象e
System.out.println(e); //输出此异常的信息
}finally{
}
}
}
输出如下
输出格式为:异常名:异常信息
再看一个例子:
class myException extends Exception{ //自定义异常类myException
public myException(String s){
super(s); //调用Exception的构造方法
}
}
class te{ //测试类
public String testScore(int x) throws myException{ //测试类的测试方法
if(x>=0 && x<=100)
return "normal"; //数据正常则返回字符串 normal
else
throw new myException("Wrong Input!"); //否则就创建一个自定义的异常类的对象并带一个字符串参数,抛出给调用的语句
}
public static void main(String[] args){
te t3 = new te();
try{ //检查异常的语句,如果出现异常就抛给下面的catch语句块
String s1 = t3.testScore(99);
System.out.println(s1);
String s2 = t3.testScore(-1);
System.out.println(s2);
}catch(myException e1){ //测试接到的异常是否符合定义的异常类型,如果是就执行下面的语句
System.out.println("The Exception Info is:"+e1.getMessage());
}
}
}
异常的getMessage方法:异常的getMessage方法用来输出异常的错误信息。