您的位置:首页 > 其它

子类异常和父类异常捕获的关系

2015-11-08 21:56 288 查看
class ExampleA extends Exception{
private String a=null;
//这里必须加上无参的构造函数,因为自己定义了有参的构造函数,则会覆盖原来无参构造函数
//但是子类构造对象时候会先调用父类的构造函数,其中会默认先调用super方法,该方法是调用父类的无参构造函数,若没有定义就会报错
public ExampleA(){}//所以必须写出无参的构造函数,写了有参就要写无参,除非程序不再调用无参的,否则调用就会报错
public ExampleA(String a){
this.a=a;
}
}

//当构造对象时候就会默认调用super方法,先调用父类的无参构造函数,super默认调用的

class ExampleB extends ExampleA{
private String b=null;
public ExampleB(String b){
this.b=b;
}
}

//最后的输出仅仅只是Example
public class Test7 {

public static void main(String[] args) {
// TODO Auto-generated method stub

//这里抛出一个ExampleB类对象的一个异常
try{
throw new ExampleB("b");
//这里先catch该父类ExampleA中异常
}catch(ExampleA e){
//若捕获到就输出EXampleA
System.out.println("ExampleA");
//这里数ExampleA的父类,但是这里捕获不到异常new ExampleB(“b”)异常了,因为异常已经被子类ExampleA捕获走了,除非子类捕获不到的异常才会执行捕获
//但是如果先catch父类的异常,子类的异常就会失效,不会执行
}catch(Exception e){
//所以该catch语句就不会执行了,即不会再输出”Example“
System.out.println("Example");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: