异常链抛出异常

异常链抛出异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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