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

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

Test2()的異常問題

public?void?test2()?{
????try?{
????????test1();
?????????}?catch?(OwnException?e)?{
?????????????RuntimeException?newExc?=?new?RuntimeException("開車不喝酒");
?????????????newExc.initCause(e);
?????????????throw?newExc;
?????????}
}

問題1、為什么test2后面不加throws

????? ? 2、test2 為什么既有try catch語句,又有throw 。 根據(jù)前面所學(xué),二者選擇一個(gè)不就好了嗎?靠try catch 沒法解決嗎?那為什么還要拋出?

????????3、不是應(yīng)該只輸出開車不喝酒嗎?為什么連test1中的文字也輸出了

正在回答

4 回答

我只針對(duì)你的第三個(gè)問題補(bǔ)充一點(diǎn),對(duì)于異常的處理,并不等于使用System.out.println輸出,它只是系統(tǒng)捕獲最終異常顯示出異常信息而已,它不是輸出。

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

一樓回答的挺好的,我做點(diǎn)補(bǔ)充,對(duì)于問題2 二者選一個(gè)是try-catch跟throws 不是throw,throw是拋出一個(gè)異常,而throws是聲明該方法可能存在的異常。對(duì)于問題3補(bǔ)充 test1拋出的異常被test2的try-catch捕獲這個(gè)你應(yīng)該是知道的。接下來的問題主要是由于 initCause引起的,如果你把initCause這句注釋掉,你會(huì)發(fā)現(xiàn)它并沒有輸出test1()拋出的異常,而且不注釋的情況下拋出的異常信息是以Cause by (導(dǎo)致)開頭的,initCause把參數(shù)異常放到運(yùn)行時(shí)異常里面,從而知道異常是誰拋出的,可以追溯到源頭,具體我也不是很懂這個(gè)initCause做了點(diǎn)啥。。

0 回復(fù) 有任何疑惑可以回復(fù)我~
  1. 當(dāng)拋出新異常時(shí),添加throws,throws的作用是聲明異常,此處無需再聲明

  2. 大體上來說此處為捕獲異常并處理的方法體。此處catch中RuntimeException將捕獲的異常包裝成運(yùn)行時(shí)異常,throw語句拋出新異?!\(yùn)行時(shí)異常。

  3. try..catch..語句中 try:調(diào)用會(huì)拋出異常的方法—test1()方法

    ? ? ? ? ? ? ? ? ? ? ? ? ? catch:處理該異常的代碼塊

    ? ?所以會(huì)執(zhí)行test1()方法

0 回復(fù) 有任何疑惑可以回復(fù)我~
  1. 語法規(guī)則 catch中拋出異常 ?方法后可不加關(guān)鍵字

  2. ?try ?catch 是對(duì)程序中的異常捕獲并處理,沒有要求說處理方式,也沒有語法要求說不能拋出異常

  3. text2 ?調(diào)用text1 并捕獲text1拋出異常,text2中newExc.initCause(e)語句功能為打印異常信息,注意其有參數(shù) 且參數(shù)為text1中異常,所以打印出 兩句

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

舉報(bào)

0/150
提交
取消

Test2()的異常問題

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

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

幫助反饋 APP下載

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

公眾號(hào)

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