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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用現(xiàn)有的 try/catch 塊或重復的 catch 塊而不引發(fā)異常

使用現(xiàn)有的 try/catch 塊或重復的 catch 塊而不引發(fā)異常

慕容森 2023-09-06 15:40:38
考慮以下 try/catch 塊:try {    throwCheckedException();} catch (IOException e) {    doStuffWithException(e);}在上面的塊中,throwCheckedException有機會拋出已檢查的異常,因此我需要一個調(diào)用doStuffWithException. 但是,假設(shè)我想在此塊中添加一條附加語句:if (!someBoolean) {    throw new IOException("someBoolean must be true, got false.");}我應該利用 catch 塊并將上述代碼插入到 try 塊中,還是復制 catch 塊中的內(nèi)容(如下所示)是更好的做法?try {    throwCheckedException();    if (!someBoolean) {        doStuffWithException(            new IOException("someBoolean must be true, got false.")        );    }} catch (IOException e) {    doStuffWithException(e);}
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

拋出異常是昂貴的操作。因此,如果您考慮兩種選擇 - 投擲和不投擲,那么不投擲是更好的方法。


然而,使用異常作為doStuffWithExceptionin的輸入?yún)?shù)try-block,感覺代碼很小。因此,我建議重構(gòu)異常處理邏輯,使其不依賴異常作為輸入?yún)?shù)。


如果您根據(jù)異常中的某些數(shù)據(jù)來處理異常情況 - 提取該數(shù)據(jù)并傳遞給handle方法?;旧希灰獙惓S米?DTO 或 POJO(因為異常不是用于此目的)。


總結(jié)一下,我建議使用類似以下片段的內(nèi)容:


try {

    throwCheckedException();

    if (!someBoolean) {

        Data data = createData();

        handle(data);

    }

} catch (IOException e) {

    Data data = createDataFromMessage(e.getMessage());

    handle(data);

}

或者,減少內(nèi)部嵌套try-block:


try {

    throwCheckedException();

} catch (IOException e) {

    Data data = createDataFromMessage(e.getMessage());

    handle(data);

}


if (!someBoolean) {

    Data data = createData();

    handle(data);

}


查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關(guān)注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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