Java基礎:異常處理
1 java異常繼承體系
1.1 常用異常繼承體系
Java把所有的非正常情況分為兩種情況:異常(Exception)和錯誤(Error),它們都繼承Throwable父類。
Error錯誤, 一般是指與虛擬機相關的問題,如系統崩潰、虛擬機錯誤、動態鏈接失敗等,這種錯誤無法恢復或不可能捕獲,將導致應用程序中斷。通常應用程序無法處理這些錯 誤,因此應用程序不應該試圖使用catch塊來捕獲Error對象。在定義方法時,也無須在其throws子句中聲明該方法可能拋出Error及其任何子 類。
Java異常(Exception)被分為兩大類:Checked異常和Runtime異常。所有的RuntimeException類及其子類的實例都被稱為Runtime異常;不是RuntimeException類及其子類的異常實例則被稱為Checked異常。
Java認為Checked異常都是可以在編譯階段被處理的異常,所以它強制程序處理所有的Checked異常,如果程序沒有處理Checked異常,則程序在編譯時會發生錯誤,無法通過編譯;而Runtime異常無須處理。
Checked異常可以提醒程序員需要處理所有可能發生的異常,但是Checked異常也給編程帶來了一些煩瑣之處,只有Java提供了Checked異常,其他語言都沒有提供,所以Checked異常也是java領域一個備受爭論的話題。
1.2 常用異常
-
ArithmeticException:當出現異常的運算條件時,拋出此異常。例如,一個整數“除以零”時,拋出此類的一個實例。
-
IndexOutOfBoundsException:用非法索引訪問排序集合(例如,數組、字符串等)時拋出的異常,如果索引為負或大于等于排序集合大小,則該索引為非法索引。
-
NullPointerException:空指針異常。當應用程序試圖在需要對象的地方使用了null 時,拋出該異常。
-
ClassNotFoundException:無法找到指定的類異常。
-
CloneNotSupportedException:相關類沒有繼承Cloneable接口。
-
IOException:發生 I/O 錯誤時引發的異常。
-
FileNotFoundException:當java程序試圖打開指定路徑名表示的文件失敗時,拋出此異常。
-
EOFException:當輸入過程中意外到達文件或流的末尾時,拋出此異常。此異常主要被數據輸入流用來表明到達流的末尾。
-
UnknownHostException:給定IP的主機無法連接。
1.3 異常對象常用方法
2 異常關鍵字
2.1 try catch finally
2.2 throw throws
2.3 return與finally
3 JDK 7異常增強
3.1 自動關閉資源
3.2 多異常捕獲
4 異常跟蹤棧
5 自定義異常
6 異常最佳實踐
來自:http://my.oschina.net/sunchp/blog/375279