天天看點

異常的概念和Java異常體系結構

 異常的概念和Java異常體系結構

    異常是程式運作過程中出現的錯誤。本文主要講授的是Java語言的異常處理。Java語言的異常處理架構,是Java語言健壯性的一個重要展現。

    Java把異常當作對象來處理,并定義一個基類java.lang.Throwable作為所有異常的超類。在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception。Java異常體系結構呈樹狀,其層次結構圖如圖 1所示:

異常的概念和Java異常體系結構

圖 1  Java異常體系結構

    Thorwable類所有異常和錯誤的超類,有兩個子類Error和Exception,分别表示錯誤和異常。其中異常類Exception又分為運作時異常(RuntimeException)和非運作時異常,這兩種異常有很大的差別,也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。下面将詳細講述這些異常之間的差別與聯系:

    1、Error與Exception

    Error是程式無法處理的錯誤,比如OutOfMemoryError、ThreadDeath等。這些異常發生時,Java虛拟機(JVM)一般會選擇線程終止。

    Exception是程式本身可以處理的異常,這種異常分兩大類運作時異常和非運作時異常。程式中應當盡可能去處理這些異常。

    2、運作時異常和非運作時異常

    運作時異常都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般是由程式邏輯錯誤引起的,程式應該從邏輯角度盡可能避免這類異常的發生。

    非運作時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程式文法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如IOException、SQLException等以及使用者自定義的Exception異常,一般情況下不自定義檢查異常。