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