1. 程式人生 > >28、各種常見的異常

28、各種常見的異常

學習目標:

1、瞭解各種常見的異常

2、瞭解異常類之間的繼承關係

 

學習過程:

一、各種常見的異常

在上一節中程式如果你注意留意,程式丟擲的異常是:java.lang.ArithmeticException。這個異常是在lang包中已經定義的。在lang包中還定義了一些我們非常常見的異常,如下表:

attcontent/4e186842-b4aa-4a8d-ad72-c9555e997de9.png

上面這些異常要求都能記住,程式丟擲了異常後,你要知道程式發生了是什麼問題。我們可以舉個例子說明一下。程式碼如下:

1

2

3

4

5

6

7

8

9

public static void main(String[] args) {

        Cal cal=null;//沒有new物件

        try{

            int result=cal.div(100);//這裡會丟擲空指標異常

            

System.out.println("結果:"+result);//這句沒有執行

        }catch (Exception e) {

            e.printStackTrace();//可以使用printStackTrace方法列印異常資訊。

        }

    

}

finally語句塊不是必須的,所以我們並沒有finally語句塊,我們通過異常的printStackTrace方法列印異常資訊,所以控制檯最後輸入:

attcontent/a6fb715e-d2f0-4e83-9f65-e631884640ce.png

再比如一下例子:

1

2

3

4

5

6

7

8

public static void main(String[] args) {

        int []arr={1,2,3,4};

        try{

            System.out.println(arr[5]);//陣列越界

        }catch (Exception e) {

            e.printStackTrace();//可以使用printStackTrace方法列印異常資訊。

        }

}

控制檯輸出陣列越界異常。如圖:

attcontent/96cf7e90-ce54-4351-93e5-adc379eac82a.png

二、異常直接的繼承關係

異常類之間的繼承關係如下圖:

對上圖我們需要說明幾點

1、Throwable類有兩個直接子類:一個是Error類,一個是Exception類。Error類前面我們也講過了,是java程式執行時系統的內部錯誤,例如記憶體溢位等,這點不需要我們程式設計師關心,關心了也沒有什麼辦法的。我們需要關係的Exception。他表示程式執行是的錯誤,可以使用try...catch...捕獲。

2、系統定義的異常大部分都是繼承了RuntimeException,有類名可知,就是執行時異常,上面我們介紹的的空指標異常,除數為0異常,和資料越界異常都是它的子類。