第三節、常見異常
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的子類
| // Exception和Error是所有異常和錯誤的超類
Throwable
|
Exception
|――ClassNotFoundException
|――CloneNotSupportedException
|――IllegalAccessException
|――InstantiationException
|――InterruptedException
|――NoSuchFieldException
|――NoSuchMethodException
|――RuntimeException
|――ArithmeticException
|――ArrayStoreException
|――ClassCastException |――IllegalThreadStateException
|――IllegalArgumentException―|――NumberFormatException
|――IllegalMonitorStateException
|――IndexOutOfBoundsException―|―ArrayIndexOutOfBoundsException
|――NegativeArraySizeException |―StringIndexOutOfBoundsException
|――NullPointerException
|――SecurityException
|――UnsupportedOperationException