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

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