为了账号安全,请及时绑定邮箱和手机立即绑定

两种异常 有什么区别?

RuntimeException newExc=new RuntimeException("司机一滴酒,亲人两行泪~") ;

newExc.initCause(e);

RuntimeException newExc=new RuntimeException(e) ;

//newExc.initCause(e);


正在回答

3 回答

        区别在于:这里(new RuntimeException("司机一滴酒,亲人两行泪"))调用了RuntimeException这个新异常的含参构造器,异常打印出来第一行是这样的:java.lang.RuntimeException:        司机一滴酒,亲人两行泪;

而RuntimeException newExc=new RuntimeException(e) 是把捕获的DrunkException e(喝大了异常)传进去,打印出来是这样:java.lang.RuntimeException:              com.imooc.test.DrunkException: 喝车别开酒!

        相当于上面那个是先抛出RuntimeException这个新异常:"司机一滴酒,亲人两行泪";

而下面那个则是直接把捕获的DrunkException(喝大了异常),即原始异常(test1里抛出的异常),抛出。

两个都是实现了异常链的功能。

                                                                                                                      我也不是很懂,以上都是个人理解。

0 回复 有任何疑惑可以回复我~
#1

yuhq 提问者

非常感谢!
2016-08-15 回复 有任何疑惑可以回复我~

仅仅是构造方式的不同,e是异常类型的一个对象,它本身携带着异常形成的原因信息,所以基本上都要通过它来创建一个新的异常,形成所谓的异常链,否则那不是就丢失了起初异常成因的信息了。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

两种异常 有什么区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信