[第五章]第三節、常見異常

第三節、常見異常

       1.檢測異常(checked exceptions

               ClassNotFoundException

定義在java.lang 中,說明某類被調用,但是沒有找到相應的類文件。該類名不正確,或者該類對程序無效。

               IOException :

定義在 java.io 中,在讀寫文件時發生錯誤的信號。在你使用流(Stream)的方法時常常不得不處理這種異常。

            FileNotFoundException :

定義在 java.io中,當訪問一個文件時,你必須準備處理這種異常。記住,這是因爲,你創建了某File對象並不意味着該文件存在。

    IllegalAccessException :

        定義在 java.lang 中,當你在某類中嘗試加載,但是當前執行方法沒有訪問指定的類時,則會發生這種異常。當你嘗試創建某類的實例,但是當前方法沒有訪問合適的無參數構造器時也會發生這種異常。

            InterruptedException :

定義在 java.lang 中,當你休眠線程或掛起線程時,必須準備處理這種異常;休眠線程或掛起線程可能在休眠時間結束之前或在調用resume()之前被中斷,以捕獲在這種情況下拋出的異常。

               MalformedURLException :

定義在 java.net中,當創建URL時,必須準備處理這種異常,以防提供的URL字符串不合要求。

            EmptyStackException :

定義在java.util中,繼承RuntimeException類。該異常可以由Stack類中的方法來拋出。如果你嘗試從空的堆棧檢索項,則會發生此異常。

            InvalidParameterException :

定義在java.security 中,擴展IllegalArgumentException類。在你嘗試給方法傳遞無效參數時發生。

 

    2.非檢測異常  (unchecked exceptions)( 定義在java.lang中)

            ArithmeticException :

定義在 java.lang 中,在出現不合法的數學運算髮生時,比如整數被0除,JVM將拋出這種異常。

    ArrayIndexOutOfBoundsException :

定義在 java.lang 中,如果你使用非法的索引值來訪問數組時,該異常就會拋出。該異常說明該索引值要麼是負值,要麼超過或等於數組大小。

            ArrayStoreException :

                定義在 java.lang 中,在你嘗試對象數組中保存錯誤類型的對象時發生。

               ClassCastException :

                定義在 java.lang 中,說明代碼嘗試把某對象轉換到不同實例的子類。

    IllegalArgumentException :

        在你嘗試向方法傳遞非法值或者不合適的值時發生。

    NullPointerException :

定義在 java.lang 中,如果調用使用null對象引用的方法,就會看到這種異常。

    NumberFormatException :

定義在 java.lang 中,如果將字符串轉換成數字,你得準備這種異常,以防該字符串實際上並不代表數字。

    StringIndexOutOfBoundsException :

                            定義在 java.lang 中,說明嘗試在字符串邊界外索引。

 

因爲java.lang實際上被所有的Java程序中引入,多數從RuntimeException派生的異常都可自動可用,而且它們不需要被包含在任何方法的throws列表中。Java語言中,這被叫做未經檢查的異常(unchecked exceptions)。在java.lang中定義了必須在方法的throws列表中包括的異常,它們包括Exception的直接子類中除RuntimeException外的子類。當方法能產生其中的某些異常但是不能自己處理時,必須在throws列表中包括它們,這些叫做受檢查的異常(checked exceptions)。

下面是java.lang包中Exception的子類圖:

Object                          // java.lang定義了很多Throwable的子類

      |                           // ExceptionError是所有異常和錯誤的超類

Throwable

|

Exception                    

       |――ClassNotFoundException

       |――CloneNotSupportedException

       |――IllegalAccessException

       |――InstantiationException

       |――InterruptedException

       |――NoSuchFieldException

       |――NoSuchMethodException

       |――RuntimeException

                            |――ArithmeticException

                            |――ArrayStoreException

                            |――ClassCastException    |――IllegalThreadStateException 

                            |――IllegalArgumentException|――NumberFormatException

                            |――IllegalMonitorStateException

                            |――IndexOutOfBoundsException|ArrayIndexOutOfBoundsException

                            |――NegativeArraySizeException      |StringIndexOutOfBoundsException

                            |――NullPointerException

                            |――SecurityException

                            |――UnsupportedOperationException

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章