异常链抛出异常

异常链抛出异常

package yichang;

public class TestYiChang {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			test_yichang3();
		}
		catch(Exception e){
			e.printStackTrace();
			
		}
	}
	public static void test_yichang1() throws MyException{
		throw new MyException();
	}
	public static void test_yichang2() throws Exception{
		try {
		test_yichang1();
		}
		catch(Exception e) {
		throw new Exception("异常2号",e);
		}
	}
	public static void test_yichang3() throws Exception{
		try {
		test_yichang2();
		}
		catch(Exception e) {
		throw new Exception("异常3号",e);
		}
	}
}

问题描述:

1.还是不太理解trow new Exception的时候构造方法多传入一个异常对象e代表什么具体含义

2.主方法调用e.printstacktrack(), 此时e是test_yichang3抛出的异常对象,为什么可以打印前面test_yichang1和test_yichang2的异常堆栈信息


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2022-02-08 13:43:16

同学你好

1、这个e其实就是这个抛出异常的实例对象

https://img1.sycdn.imooc.com//climg/6201ff9d09bd4f6602750058.jpg

将该对象传入构造方法中可以获取到旧对象信息,从而形成异常链

2、因为在test_yichang3()方法中调用了test_yichang2()方法,test_yichang2()方法中又调用了test_yichang1()方法

祝学习愉快~

  • 提问者 胖胖的工程师 #1

    能不能这么理解,主方法要的是所有调用过程中产生的异常堆栈消息,所以发生了3次调用就把3次调用过程中的全部异常堆栈信息全打印了

    2022-02-08 14:00:08
  • 同学你好,可以这么理解,这就是为什么会产生异常链,如果只调用一个方法或者调用方法中断,就不会产生异常链

    祝学习愉快~

    2022-02-08 16:12:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师