Throwable 是 Java 語(yǔ)言中所有錯(cuò)誤與異常的超類(lèi)。
Error 類(lèi)及其子類(lèi):程序中無(wú)法處理的錯(cuò)誤,表示運(yùn)行應(yīng)用程序中出現(xiàn)了嚴(yán)重的錯(cuò)誤。Exception 程序本身可以捕獲并且可以處理的異常。Exception 這種異常又分為兩類(lèi):運(yùn)行時(shí)異常和編譯時(shí)異常。
運(yùn)行時(shí)異常
都是RuntimeException類(lèi)及其子類(lèi)異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標(biāo)越界異常)等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯(cuò)誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類(lèi)異常的發(fā)生。
運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它,也就是說(shuō),當(dāng)程序中可能出現(xiàn)這類(lèi)異常,即使沒(méi)有用try-catch語(yǔ)句捕獲它,也沒(méi)有用throws子句聲明拋出它,也會(huì)編譯通過(guò)。
非運(yùn)行時(shí)異常 (編譯異常)
是RuntimeException以外的異常,類(lèi)型上都屬于Exception類(lèi)及其子類(lèi)。從程序語(yǔ)法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過(guò)。如IOException、SQLException等以及用戶(hù)自定義的Exception異常,一般情況下不自定義檢查異常