1. 程式人生 > >java異常分類

java異常分類

Java中異常的分類

        所有異常,都繼承自java.lang.Throwable類。
        Throwable有兩個直接子類,Error類和Exception類。

Exception

        Exception則可使從任何標準Java庫的類方法,自己的方法以及執行時任何異常中丟擲來的基型別。
        異常可分為執行異常(RuntimeException)和檢查異常(Checked Exceptions)兩種

RuntimeException

        RuntimeException在預設情況下會得到自動處理。所以通常用不著捕獲RuntimeException,但在自己的封裝裡,也許仍然要選擇丟擲一部分RuntimeException。

        RuntimeException是那些可能在 Java 虛擬機器正常執行期間丟擲的異常的超類。可能在執行方法期間丟擲但未被捕獲的RuntimeException的任何子類都無需在throws子句中進行宣告。(java api)
        它是uncheckedExcepiton。

        Java.lang.ArithmeticException
        Java.lang.ArrayStoreExcetpion
        Java.lang.ClassCastException
        Java.lang.EnumConstantNotPresentException
        Java.lang.IllegalArgumentException
        Java.lang.IllegalThreadStateException
        Java.lang.NumberFormatException
        Java.lang.IllegalMonitorStateException
        Java.lang.IllegalStateException
        Java.lang.IndexOutOfBoundsException
        Java.lang.ArrayIndexOutOfBoundsException
        Java.lang.StringIndexOutOfBoundsException
        Java.lang.NegativeArraySizeException’
        Java.lang.NullPointerException
        Java.lang.SecurityException
        Java.lang.TypeNotPresentException
        Java.lang.UnsupprotedOperationException

CheckedException

        除了runtimeException以外的異常,都屬於checkedException,它們都在java.lang庫內部定義。Java編譯器要求程式必須捕獲或宣告丟擲這種異常。
        一個方法必須通過throws語句在方法的宣告部分說明它可能丟擲但並未捕獲的所有checkedException。
        Java.lang.ClassNotFoundException
        Java.lang.CloneNotSupportedException
        Java.lang.IllegalAccessException
        Java.lang.InterruptedException
        Java.lang.NoSuchFieldException
        Java.lang.NoSuchMetodException

Error

        當程式發生不可控這種錯誤時,通常的做法是通知使用者並中止程式的執行。
        與異常不同的是Error及其子類的物件不應被丟擲。
        Error 是 Throwable 的子類,代表編譯時間和系統錯誤,用於指示合理的應用程式不應該試圖捕獲的嚴重問題。大多數這樣的錯誤都是異常條件。雖然 ThreadDeath 錯誤是一個“正規”的條件,但它也是 Error 的子類,因為大多數應用程式都不應該試圖捕獲它。
在執行該方法期間,無需在其 throws 子句中宣告可能丟擲但是未能捕獲的 Error 的任何子類,因為這些錯誤可能是再也不會發生的異常條件。