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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

異常處理 - 捕獲多個(gè)異常未按預(yù)期工作

異常處理 - 捕獲多個(gè)異常未按預(yù)期工作

青春有我 2023-03-31 09:39:18
我有一個(gè)包含多個(gè)異常的 catch 塊 - Arithmetic 和 NullPointer 以及一個(gè)包含 Exception 的 catch 塊。我正在從 catch 塊調(diào)用一個(gè)方法,但它沒(méi)有正確找到異常實(shí)例。try {        int a = 10/0;    } catch (ArithmeticException | NullPointerException e) {        Exce(e);    } catch (Exception e) {        Exce(e);    }public static void Exce(ArithmeticException ex) {    System.out.println("Arithmetic");}public static void Exce(Exception ex) {    System.out.println("Exception");}但是我得到的輸出是“異?!?。我不確定為什么沒(méi)有顯示算術(shù)當(dāng)我有單獨(dú)的算術(shù)和空指針的捕獲塊時(shí)..我能夠打印“算術(shù)”..但是捕獲多個(gè)異常不起作用......
查看完整描述

2 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果將 ArithmeticException 和 NullPointerException 拆分為 2 個(gè) catch 塊,它會(huì)按預(yù)期工作。我假設(shè)這是因?yàn)樽兞?e 被聲明為 Exception 類(lèi)型,以便能夠容納 ArithmeticException 和 NullPointerException。


public static void main(String[] args) {

    try {

        int a = 10 / 0;

    } catch (ArithmeticException e) {

        Exce(e);

    } catch (NullPointerException e) {

        Exce(e);            

    } catch (Exception e) {

        Exce(e);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

} catch (ArithmeticException | NullPointerException e) {
    Exce(e);
}

上面的編譯時(shí)類(lèi)型是和的并集。因此,當(dāng)編譯器嘗試將 的類(lèi)型與方法進(jìn)行匹配時(shí):eArithmeticExceptionNullPointerExceptioneExce

  • 重載Exce(ArithmeticException)不適用,因?yàn)樵谶\(yùn)行時(shí)e可能是一個(gè)NullPointerException.

  • 重載Exce(Exception)是適用的,因?yàn)?code>e匹配的聯(lián)合的任何值ArithmeticException也是NullPointerException一個(gè)Exception。

不幸的是,您不能為 ... 聲明方法重載,ArithmeticException | NullPointerException即使您想要:

  • 如果你想像ArithmeticException | NullPointerException這樣一起處理,你可以像這樣聲明一個(gè)重載:

    public static void Exce(RuntimeException ex) {
        System.out.println("RuntimeException");
    }
  • 或者,分別捕獲ArithmeticExceptionNullPointerException。

  • 也可以在一個(gè) catch 子句中捕獲這兩個(gè)異常,然后使用(比如說(shuō))instanceof和類(lèi)型轉(zhuǎn)換來(lái)區(qū)分它們。但是要做到這一點(diǎn)需要更多的代碼。(由于其他原因,這是個(gè)壞主意。)


查看完整回答
反對(duì) 回復(fù) 2023-03-31
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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