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

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

Java異常設(shè)計:必須捕獲或聲明拋出=>代碼影響太大

Java異常設(shè)計:必須捕獲或聲明拋出=>代碼影響太大

BIG陽 2023-10-12 16:49:52
免責聲明:我來自 C# 世界,所以這個問題可能因我之前的經(jīng)驗而有偏差我有一個初始化日志記錄的方法。如果失敗,應(yīng)用程序的其余部分不應(yīng)運行,因為對記錄器的任何調(diào)用都會拋出 NullPointerException。今天,我的代碼捕獲異常并通過 System.err 打印錯誤日志。對我來說,這是一個錯誤,它應(yīng)該讓異常傳播直到它殺死應(yīng)用程序。因此,我開始刪除 try catch,突然收到編譯器的抱怨,說我應(yīng)該在調(diào)用此方法的整個堆棧上聲明我的異常。我理解它背后的邏輯,并且發(fā)現(xiàn)它很實用:你知道這種方法是如何失敗的。然而,就責任分離而言,這對我來說聽起來并不正確。我不希望上層意識到這種潛在的 IOException 失敗,這是一種非常特殊的行為,例如 main 方法不應(yīng)該知道。而且,如果我們推動這個邏輯,那就意味著:最高層最終必須聲明異常的整個范圍(從 IO 到網(wǎng)絡(luò)再到自定義異常......)任何新異常的添加都可能會影響大量文件和代碼我是否遺漏了什么或者這是預(yù)期的異常設(shè)計?
查看完整描述

3 回答

?
幕布斯7119047

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

我認為你正在尋找的不是 Java 異常,而是 Java 錯誤。

Error 是 Throwable 的子類,它指示合理的應(yīng)用程序不應(yīng)嘗試捕獲的嚴重問題。大多數(shù)此類錯誤都是異常情況。ThreadDeath 錯誤雖然是“正?!鼻闆r,但也是 Error 的子類,因為大多數(shù)應(yīng)用程序不應(yīng)嘗試捕獲它。

https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html

您可以拋出一個錯誤,這表明您的應(yīng)用程序?qū)⒉辉俟ぷ?,而您已將其聲明為正確的行為。


查看完整回答
反對 回復 2023-10-12
?
ibeautiful

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

如果您無法初始化記錄器并且這是一個企業(yè)應(yīng)用程序,我建議使用解釋原因的退出代碼來終止您的應(yīng)用程序。如果這是客戶端應(yīng)用程序,我建議向客戶端顯示一條消息,說明問題,建議客戶端向您報告此問題,并允許他們選擇是否繼續(xù)



查看完整回答
反對 回復 2023-10-12
?
米脂

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

您可以將檢查的異常封裝在 RuntimeException 中(如果是其子異常,則將其封裝在 RuntimeException 中),這不會強制您聲明異常:


public X execute() {

    try {

        return someThrowingMethod();

    } catch (Exception ex) {

        throw new RuntimeException(ex);

    }

}



查看完整回答
反對 回復 2023-10-12
  • 3 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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