JAVA的異常機(jī)制

Java中的Exception異常

public class Exception extends Throwable
Exception類及其子類是Throwable的一種形式,它指出了合理的應(yīng)用程序想要捕獲的條件。

public class RuntimeException extends Exception
RuntimeException是那些可能在JVM正常運(yùn)行期間拋出的異常的超類。
可能在執(zhí)行期間拋出的但未被捕獲的RuntimeException的任何子類都無需在throws子句中進(jìn)行聲明。

Java的異常體系

653561-92338ff5fe9dd644.png

Java的異常體系規(guī)定了所有的異常都是繼承自Throwable;

直接繼承自Throwable的有兩大類:

  • Error:一般來說,Error類型的異常是不應(yīng)該被捕獲的,這類似錯(cuò)誤一般都是嚴(yán)重的系統(tǒng)錯(cuò)誤,在Java中默認(rèn)約定Error類型是交給虛擬機(jī)處理的。所以一般情況下,都不應(yīng)該捕獲Error類型的異常。
  • Exception:Exception分為兩種,一種是繼承自RuntimeException的類,比如NullPointerException、IndexOutOfBoundsException等,這類異常叫做非檢測異常(unchecked exception),另外一種是繼承自Exception(但是沒有同時(shí)又繼承自RuntimeException)的類,比如常見的IOException,這類異常是受檢測異常(checked exception),受監(jiān)測異常和前者的明顯區(qū)別是在語法上要么用try-catch捕獲要么拋出要么重新throw,

Exception的分類:

1.非運(yùn)行時(shí)異常(Checked Exception)

Java中凡是繼承自Exception但不是繼承自RuntimeException的類都是非運(yùn)行時(shí)異常;這種檢查類型的異常就是說要程序員明確的去聲明或者用try..catch語句去處理異常;

2.運(yùn)行時(shí)異常(RuntimeException/Unchecked Exception)

RuntimeException類直接繼承自Exception類,稱為運(yùn)行時(shí)異常。Java中所有的運(yùn)行時(shí)異常都是直接或間接的繼承自RuntimeException。

JAVA中的所有異常類都直接或者間接繼承自Exception。

異常使用時(shí)需注意的幾個(gè)點(diǎn):

  • 當(dāng)使用多個(gè)catch語句塊來捕獲異常時(shí),需要將父類的catch語句塊放到子類型的catch塊之后,這樣才能保證后續(xù)的catch可能會(huì)被執(zhí)行到
  • 如果try代碼塊之中存在return語句,那么首先會(huì)執(zhí)行finally語句塊中的代碼,然后返回
  • 如果try代碼塊之中存在System.exit(0)語句,那就永遠(yuǎn)不會(huì)執(zhí)行finally語句塊的代碼了;因?yàn)?code>Sysytem.exit(0)會(huì)終止當(dāng)前運(yùn)行的JVM。

參考文章:
http://www.itdecent.cn/p/e7b55c8bd456
http://www.cnblogs.com/octobershiner/archive/2012/12/20/2827120.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容