課程
/后端開發
/Java
/Java入門第三季
newExc.initCause(e); ?這句話是什么意思 ?可有可無么
2015-12-01
源自:Java入門第三季 1-7
正在回答
這是對異常的一種包裝技巧。更底層產生的異常需要上層的代碼來進行處理。一般而言,如果上層的代碼catch到一個異常以后,你想對更上層的結構拋出一個更高級異常來說明。你可以直接在catch語句塊中throw一個新的異常,但是這樣的做法是不被提倡的,因為你這樣會丟失底層產生的異常的信息?,F在假如在你的某段代碼會產生FileNotFoundException,你需要通過一個中間的代碼向上面拋出一個IOException你有這么兩種做法:
try{ ????代碼... }catch(FileNotFoundException?e){ ????throw?new?IOException; }
這是第一種,但是這種做法是不被提倡的,因為他會丟掉原始異常。正確的做法是這樣的:
try{ ????代碼... }catch(FileNotFoundException?e){ ????Throable?se?=?new?IOException("error..."); ????se.initCause(e);? ????throw?se; }
initCause()的作用你可以理解成是保存原始的異常,當你想要知道底層發生了什么異常的時候調用getCause()就能夠獲得原始異常。其實這就形成一個異常鏈了,這對于你的代碼是很有幫助的。
weibo_我不學習沒人愛_0 提問者
此用戶不存在或被刪除
慕函數1733451
第一種代碼也可以寫成這樣,是不是就考慮一下“不提倡”了呢?代碼如下:
try{
????代碼...
}catch(FileNotFoundException?e){
????throw(IOException)?
? ? new?IOException("error...").initCause(e);
}
Throable是不是寫錯了
很好很形象
您好,我其實想知道,異常鏈是干嘛用的?這個異常鏈很經常用到么?
qq_老表_1
大腦艾瑞克 回復 qq_老表_1
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答newExc.initCause(e); initCause是什么意思?用來干嘛的
2 回答這句話是什么意思?
1 回答newexc.initCause(e);
4 回答newExc.initCause(e);
3 回答InputMismatchException e這個e是什么意思,代表什么?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-01
這是對異常的一種包裝技巧。更底層產生的異常需要上層的代碼來進行處理。一般而言,如果上層的代碼catch到一個異常以后,你想對更上層的結構拋出一個更高級異常來說明。你可以直接在catch語句塊中throw一個新的異常,但是這樣的做法是不被提倡的,因為你這樣會丟失底層產生的異常的信息?,F在假如在你的某段代碼會產生FileNotFoundException,你需要通過一個中間的代碼向上面拋出一個IOException你有這么兩種做法:
這是第一種,但是這種做法是不被提倡的,因為他會丟掉原始異常。正確的做法是這樣的:
initCause()的作用你可以理解成是保存原始的異常,當你想要知道底層發生了什么異常的時候調用getCause()就能夠獲得原始異常。其實這就形成一個異常鏈了,這對于你的代碼是很有幫助的。
2017-12-15
第一種代碼也可以寫成這樣,是不是就考慮一下“不提倡”了呢?代碼如下:
try{
????代碼...
}catch(FileNotFoundException?e){
????throw(IOException)?
? ? new?IOException("error...").initCause(e);
}
2017-06-19
Throable是不是寫錯了
2016-12-16
很好很形象
2016-01-10
您好,我其實想知道,異常鏈是干嘛用的?這個異常鏈很經常用到么?