java異常處理的學習筆記

程序在執行時,如果異常沒有處理,程序就會被迫終止,異常處理能使程序可以處理預期之外的結果,使程序能順利運行。

異常可大致分爲三種:系統錯誤、異常、運行時異常。

系統錯誤用Error類表示,Error描述的是內部系統錯誤,而這種錯誤一般很少發生,但一旦發生,除了通知用戶以及儘量委穩妥的關閉程序外,基本沒什麼能做的;

異常用Exception類表示,Exception描述的是有程序和外部環境所引起的錯誤,這些異常能被捕獲和處理,例如引用一個不存在的類,打開一個不存在的文件等;

運行時異常用RuntimeException,RuntimeException描述的是程序的設計錯誤,例如除數爲0,數據類型錯誤,數組越界等。

處理異常通常有三個操作:聲明(由throws引導),拋出(由throw引導),捕獲(由catch引導)一個異常。

聲明異常:每個方法都必須聲明他可能拋出的必撿異常的類型,這稱爲聲明異常,每個方法都可能發生異常,但免檢異常是不需要聲明的,而必檢則必須在方法頭聲明

eg:

public void Method() throw Exception1,Exception2,Exception3....,ExceptionN;

拋出異常:檢測到錯誤的程序的可以創建一個合適的異常類型的實例並拋出它,這就稱爲拋出一個異常

eg:

throw new ArithmeticException("Wrong Argument"):

捕獲異常:在拋出一個異常後,我們可以用try-catch語句捕獲和處理它,在try語句中每拋出一個異常,程序就會跳過try中後面的語句,然後開始查找處理這個異常的代碼的過程,這個過程稱爲異常處理器;找到一個異常後直接查找處理異常的方法,從第一個catch查到最後一個catch,查到就執行,若沒有catch能捕獲這個異常,程序將停止。

eg;

try{
	statements;
}
catch(Exception1 ex1){
	handler for exception1;
}
catch(Exception2 ex2){
	handler for exception2;
}
......
catch(ExceptionN exN){
	handler for exceptionN;
}

一個通用的異常可以派生出各種異常類,如果一個異常能被父類catch捕獲,那他就能被他的子類catch捕獲,故catch塊中捕獲異常是有順序的,如果父類的catch塊是放在子類catch塊前面的,將出現編譯錯誤。

從JDK7開始能使用新的多捕獲特徵來簡化代碼,eg:

catch(Exception1 | EXception2 | Exception3 ......| ExceptionN){

}

在java.lang.Throwable類中提供了一些方法能顯示異常的信息,eg:

getMessage():放回描述給異常對象的信息,例如如果除數爲0,則返回/ by zero

toString():返回三個字符串的鏈接:異常類的全名 + ": " + getMessage()方法

printStackTrace():在控制檯上打印Throwable對象和它的調用堆棧(內存,即c語言中地址)信息

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