第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

作業(yè)中,initCause(e)的作用是什么???

bookNotExists.initCause(e);請(qǐng)問(wèn)這句代碼起什么作用?。?/p>



正在回答

5 回答

字?jǐn)?shù)太多,發(fā)到這里。

不是為了實(shí)現(xiàn)哪一句代碼的。initCause()這個(gè)方法就是對(duì)異常來(lái)進(jìn)行包裝的,目的就是為了出了問(wèn)題的時(shí)候能夠追根究底。因?yàn)橐粋€(gè)項(xiàng)目,越往底層,可能拋出的異常類型會(huì)用很多,如果你在上層想要處理這些異常,你就需要挨個(gè)的寫很多catch語(yǔ)句塊來(lái)捕捉異常,這樣是很麻煩的。如果我們對(duì)底層拋出的異常捕獲后,拋出一個(gè)新的統(tǒng)一的異常,會(huì)避免這個(gè)問(wèn)題。但是直接拋出一個(gè)新的異常,會(huì)讓最原始的異常信息丟失,這樣不利于排查問(wèn)題。舉個(gè)例子,在底層會(huì)出現(xiàn)一個(gè)A異常,然后在中間代碼層捕獲A異常,對(duì)上層拋出一個(gè)B異常。如果在中間代碼層不對(duì)A進(jìn)行包裝,在上層代碼捕捉到B異常后就不知道為什么會(huì)導(dǎo)致B異常的發(fā)生,但是包裝以后我們就可以用getCause()方法獲得原始的A異常。這對(duì)追查BUG是很有利的。

class?A{
????try{
????????...
????}catch(AException?a){
?????throw?new?BException();
????}
}
...
class?B{
????try{
????????...
????}catch(BException?b){
????????//這時(shí)候你需要去看b異常式什么問(wèn)題導(dǎo)致的,你在A類里面
????????//沒(méi)有對(duì)AException進(jìn)行包裝,所以你無(wú)法知道是A導(dǎo)致的B
????}
}

如果包裝以后:

class?A{
????try{
????????...
????}catch(AException?a){
????????BException?b?=?new?BEexception();
????????b.initCause(a);
????????throw?b;
????}
}
...
class?B{
????try{
????????...
????}catch(BException?b){
????????//什么導(dǎo)致了b呢?
????????b.getCause();//得到導(dǎo)致B異常的原始異常
????}
}

這樣看應(yīng)該很明白了吧。

37 回復(fù) 有任何疑惑可以回復(fù)我~
#1

天涯蝶舞 提問(wèn)者

非常形象,謝謝!
2015-12-21 回復(fù) 有任何疑惑可以回復(fù)我~
#2

不甘于現(xiàn)實(shí)

哈哈 看懂了 有意思
2016-05-17 回復(fù) 有任何疑惑可以回復(fù)我~
#3

player007

為什么我用eclipse使用直接throw異常和e.printStackTrace這個(gè)兩個(gè)方法都能在控制臺(tái)上打印出異常但是使用getCause卻什么都沒(méi)有
2016-08-05 回復(fù) 有任何疑惑可以回復(fù)我~
#4

沒(méi)名堂的我

贊贊贊
2017-02-28 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

b.getCause();得到的原始異常是指包裝前的異常嗎?

0 回復(fù) 有任何疑惑可以回復(fù)我~

多少明白了一些!

0 回復(fù) 有任何疑惑可以回復(fù)我~

牛叉,有解釋有代碼好贊

0 回復(fù) 有任何疑惑可以回復(fù)我~

我之前回答過(guò)這個(gè)問(wèn)題,你可以去看看

newExc.initCause(e); 這句話是什么意思 可有可無(wú)么

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

天涯蝶舞 提問(wèn)者

感覺(jué)還是有些模糊,加上這一句是為了實(shí)現(xiàn)哪一句代碼呢?
2015-12-20 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

作業(yè)中,initCause(e)的作用是什么啊?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)