一、各種常見的異常
在上一節中程序如果你注意留意,程序拋出的異常是:java.lang.ArithmeticException。這個異常是在lang包中已經定義的。在lang包中還定義了一些我們非常常見的異常,如下表:
上面這些異常要求都能記住,程序拋出了異常后,你要知道程序發生了是什么問題。我們可以舉個例子說明一下。代碼如下:
public static void main(String[] args) { Cal cal=null;//沒有new對象 try{ int result=cal.div(10, 0);//這里會拋出空指針異常 System.out.println("結果:"+result);//這句沒有執行 }catch (Exception e) { e.printStackTrace();//可以使用printStackTrace方法打印異常信息。 } }
finally語句塊不是必須的,所以我們並沒有finally語句塊,我們通過異常的printStackTrace方法打印異常信息,所以控制台最后輸入:
二、異常直接的繼承關系
異常類之間的繼承關系如下圖:
對上圖我們需要說明幾點
1、Throwable類有兩個直接子類:一個是Error類,一個是Exception類。Error類前面我們也講過了,是java程序運行時系統的內部錯誤,例如內存溢出等,這點不需要我們程序員關心,關心了也沒有什么辦法的。我們需要關系的Exception。他表示程序運行是的錯誤,可以使用try...catch...捕獲。
2、系統定義的異常大部分都是繼承了RuntimeException,有類名可知,就是運行時異常,上面我們介紹的的空指針異常,除數為0異常,和數據越界異常都是它的子類。