1. 程式人生 > >【Java學習筆記】異常處理

【Java學習筆記】異常處理

  • Java異常概念
  • java異常的分類
  • 異常的捕獲和處理

    1. 是指在執行期出現的錯誤
    2. 觀察錯誤的名字和行號最重要

異常的概念

  • 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語句中可以進行資源的清理工作,如:
- 關閉開啟的檔案
- 刪除臨時檔案