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