Java 核心36講(第2講) Exception 和 Error 有什么區(qū)別

共同點

都是從 Throwable 這個 Java 類繼承來的。Throwable 類也就衍生出這兩種類型。

不同點

Error:

表示編譯時和系統(tǒng)錯誤,指在正常情況下,不大可能出現(xiàn)的情況。絕大部分的 Error 都會導致程序不可恢復。

Exception:

是程序正常運行中,可以預料的意外情況,可能并且應該被捕獲,并進行相應的處理。
Exception 又分為檢查型異常 (check exception) 與 非檢查型異常 (unchecked exception) 。檢查型異常是在編譯期檢查,非檢查型異常就是運行時異常。運行時異常都是從 RuntimeException 繼承來的,這種異常屬于錯誤,將被自動捕獲。

補充

1、理解 Throwable、Exception、Error 的設計和分類。

面試官會追問一些細節(jié),如:你了解哪些 Error、Exception、RuntimeException? 重點了解一下常用的子類。

經(jīng)典問題:NoClassDefFoundError 與 ClassNotFoundException的區(qū)別。

NoClassDefFoundError 產(chǎn)生原因:如果 JVM 或者 ClassLoader 實例嘗試加載類的時候卻找不到類的定義,要查找的類在編譯期存在,運行時卻找不到,造成該問題的原因可能是打包過程露掉了部分類,或者 jar 包出現(xiàn)損壞或者篡改。
ClassNotFoundException產(chǎn)生原因:1.Java 支持反射方式在運行時動態(tài)加載類,例如使用 Class.forName() 方法來動態(tài)的加載類時,可以將類名作為參數(shù)傳遞到上述方法中,從而將指定類加載到 JVM 內(nèi)存中,如果這個類在類路徑中沒有被找到,就會拋出這個錯誤。常見問題在于書寫名錯誤;2.當一個類已經(jīng)被某個類加載器加載到內(nèi)存中了,另一個類加載器又嘗試著動態(tài)的從同一個包中加載這個類。通過控制動態(tài)類加載過程可以解決這個問題。

2、理解 Java 語言中操作 Throwable 的元素和實踐。

掌握最基本的語法同時也要懂得如何處理典型場景。
典型場景是什么呢?待補充

異常處理基本原則

1.盡量不要捕獲類似 Exception 這樣的通用異常,應該捕獲特定異常。

這樣寫為了讓自己代碼能夠體現(xiàn)出更多的信息。

2.不要生吞異常。

在工作中,如果發(fā)生異常,不要使用 e.printStackTrace() 來輸出異常,因為很難判斷輸出到哪里去了,最好使用產(chǎn)品日志,詳細的輸入到日志系統(tǒng)中。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 這周身體不適請了兩天病假,只上...
    JavaFish閱讀 387評論 0 0
  • 1.異常:這種情況下的異常,可以通過完善任務重試機制,當執(zhí)行異常時,保存當前任務信息加入重試隊列。重試的策略根據(jù)業(yè)...
    _Rice_閱讀 2,339評論 0 0
  • 問題 請對比Exception和Error,另外,運行時異常與一般異常有什么區(qū)別? 典型回答 Exception和...
    wuchao226閱讀 352評論 0 0
  • 八、深入理解java異常處理機制 引子try…catch…finally恐怕是大家再熟悉不過的語句了, 你的答案是...
    壹點零閱讀 1,731評論 0 0
  • 人非圣賢孰能無過, 誰有過錯, 問責當事雙方, 別把家人卷入其中, 借唯一能說話的地方, 我再說一遍, 別把家人卷...
    張自芳閱讀 313評論 0 3

友情鏈接更多精彩內(nèi)容