亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

兩種異常 有什么區別?

RuntimeException newExc=new RuntimeException("司機一滴酒,親人兩行淚~") ;

newExc.initCause(e);

RuntimeException newExc=new RuntimeException(e) ;

//newExc.initCause(e);


正在回答

2 回答

????????區別在于:這里(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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號