- Java異常概念
- java異常的分類
異常的捕獲和處理
- 是指在運行期出現的錯誤
- 觀察錯誤的名字和行號最重要
異常的概念
- Java異常是Java提供的用於處理程序中錯誤的一種機制。
- 所謂錯誤是指在程序運行的過程中發生的一些異常事件(如:除0溢出,數組下標越界,所要讀取的文件不存在)。
- 設計良好的程序應該在異常發生時提供處理這些錯誤的方法,使得程序不會因爲異常的發生而阻斷或產生不可預見的結果。
- Java程序的執行過程中出現異常事件,可以生成一個異常類對象,該異常對象封裝了異常事件的信息並被提交給Java運行時系統,這個過程稱作拋出(throw)異常。
- 當Java運行時系統接收到異常對象時,會尋找能處理這一異常的代碼並把當前異常對象交給其處理,這一過程稱爲捕獲(catch)異常。
public class TestEx {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
try {
System.out.println(2/0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
}
public void someMethod() throws SomeException {
if (someConition()) {
throw new SomeException("錯誤原因");
}
}
try {
someMethod();
} catch (SomeException e) {
//異常處理代碼;
}
異常的分類
- J2SDK中定義了很多異常類,這些類對應了各種各樣可能出現的異常事件。
Error:稱爲錯誤,由Java虛擬機生成並拋出,包括動態鏈接失敗、虛擬機錯誤等,程序對其不做處理。
Exception:所有異常類的父類,其子類對應了各種各樣可能出現的異常事件,一般需要用戶顯示的聲明或捕獲。
Runtime Exception:一類特殊的異常,如被0除、數組下標超範圍等,其產生比較繁瑣,處理麻煩,如果顯示的聲明或捕獲將會對程序可讀性和運行效率影響很大。因此由系統自動檢測並將它們交給缺省的異常處理程序(用戶可不必對其處理)。
異常的捕獲和處理
try {
//可能拋出的異常的語句
} catch (SomeException1 e)
{
... ... ...
} catch (SomeException2 e)
{
... ... ...
} finally { ... ... ... }
try語句
- try{…}語句指定了一段代碼,該段代碼就是一次捕獲並處理例外的範圍。
- 在執行過程中,該段代碼可能會產生並拋出一種或者幾種類型的異常對象,它後面的catch語句要分別對這些異常做相應的處理。
- 如果沒有例外產生,所有的catch代碼段都被略過不執行。
catch語句
- 在catch語句塊中是對異常進行處理的代碼,每個try語句塊可以伴隨一個或多個catch語句,用於處理可能產生的不同類型的異常對象。
- 在catch中聲明的異常對象(catch(SomeException e))封裝了異常事件發生的信息,在catch語句塊中可以使用這個對象的一些方法獲取這些信息。
- 例如:
- getMessage()方法,用類得到有關異常事件的信息。
- printStackTrace()方法,用來跟蹤異常事件發生時執行堆棧的內容。
finally語句
- finally語句爲異常處理提供一個統一的出口,使得在控制流程轉到程序的其他部分以前,能夠對程序的狀態作統一的管理。
- 無論try所指定的程序塊中是否拋出異常,finally所指定的代碼都要被執行。
- 通常在finally語句中可以進行資源的清理工作,如:
- 關閉打開的文件
- 刪除臨時文件