java異常類層次結構圖:
Error(錯誤):
是程序無法處理的錯誤俗慈,表示運行應用程序中較嚴重問題苔可。大多數(shù)錯誤與代碼編寫者執(zhí)行的操作無關土思,而表示代碼運行時 JVM(Java 虛擬機)出現(xiàn)的問題腋颠。例如繁成,Java虛擬機運行錯誤(Virtual MachineError),當 JVM 不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時淑玫,將出現(xiàn) OutOfMemoryError巾腕。這些異常發(fā)生時,Java虛擬機(JVM)一般會選擇線程終止絮蒿。
Exception(異常):
是程序本身可以處理的異常尊搬。
異常和錯誤的區(qū)別:
異常能被程序本身可以處理,錯誤是無法處理土涝。
可檢查異常(編譯器要求必須處置的異常):
除了RuntimeException及其子類以外佛寿,其他的Exception類及其子類都屬于可查異常。這種異常的特點是Java編譯器會檢查它回铛,也就是說狗准,當程序中可能出現(xiàn)這類異常克锣,要么用try-catch語句捕獲它茵肃,要么用throws子句聲明拋出它,否則編譯不會通過袭祟。
不可檢查異常(編譯器不要求強制處置的異常):
包括運行時異常(RuntimeException與其子類)和錯誤(Error)验残。
Exception 這種異常分兩大類運行時異常和非運行時異常(編譯異常)。程序中應當盡可能去處理這些異常巾乳。
運行時異常:
這些異常是不檢查異常您没,程序中可以選擇捕獲處理,也可以不處理胆绊。這些異常一般是由程序邏輯錯誤引起的氨鹏,程序應該從邏輯角度盡可能避免這類異常的發(fā)生。
非運行時異常 (編譯異常):
RuntimeException以外的異常压状,類型上都屬于Exception類及其子類仆抵。從程序語法角度講是必須進行處理的異常敌蜂,如果不處理诱鞠,程序就不能編譯通過。如IOException尔破、SQLException等以及用戶自定義的Exception異常娱两,一般情況下不自定義檢查異常莺匠。