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