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

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");
		}
	}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值