Throwable 是java 語言中所有Error或Exception的超類。只有當對象是此類或其子類的實例時,才能通過 Java 虛擬機或者 Java throw 語句拋出。類似地,只有此類或其子類才可以是 catch 子句中的參數類型。
Error 是 Throwable 的子類,一般是指與虛擬機相關的問題,如系統(tǒng)崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對于Error, 程序應當終止。
Exception代表程序可以處理的異常。
在java中,根據在編譯時是否要求異常被強制檢查來將異常分成兩類,Unchecked異常和Checked異常。
編譯器強制Checked異常必須使用try..catch處理或用throws聲明繼續(xù)拋給上層調用方法處理,而對于Unchecked異常,編譯器則不做要求,默認情況下會自動得到處理,所以可以作處理也可以不處理。
Error及其衍生類和RuntimeException及其衍生類屬于Unchecked異常,其它的異常均為Checked異常,需要注意Throwable本身也屬于Checked異常。
所以,當我們需要自定義一個異常且不需要對它進行處理的時候可以選擇繼承RuntimeException.
在下例中,Error和RuntimeException是Unchecked異常,所以不進行try…catch或throws也編譯正確,但Exception是Checked異常,所以如果不進行處理,就編譯錯誤。
public void f1() { throw new Error();//編譯正確}public void f2() { throw new RuntimeException();//編譯正確}public void f3() { throw new Exception();//編譯錯誤}public void f4() { try { throw new Exception();//編譯正確 } catch (Exception e) { ... }}public void f5()throws Exception { throw new Exception();//編譯正確}新聞熱點
疑難解答