1. Throwable類
什么是Throwable類?Throwable類就是Java語言中所有錯誤或異常的超類,是對所有異常進(jìn)行整合的一個普通類,其作用是提取保存在堆棧中的錯誤信息。
2. Error類
Error類是Throwable類的子類,包括系統(tǒng)異常、虛擬機(jī)異常等用戶無法阻止的問題。
3. Exception類
Exception類也是Throwable類的子類,它是程序本身可以處理的異常,分為運行時異常(checked)和非運行時異常(unchecked)。其中運行時異??商幚?,也可不處理;非運行時異常必須處理。
1)運行時異常
運行時異常都是RuntimeException類及其子類異常,比如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生。
當(dāng)出現(xiàn)RuntimeException的時候,我們可以不處理,一般由虛擬機(jī)接管。
出現(xiàn)運行時異常后,如果沒有捕獲處理這個異常(即沒有catch),系統(tǒng)會把異常一直往上層拋,一直到最上層,如果是多線程就由Thread.run()拋出,如果是單線程就被main()拋出。拋出之后,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那么這整個程序也就退出了。運行時異常是Exception類的子類,也有一般異常的特點,就是可以被catch塊處理。只不過往往我們不對它處理,也就是說,你如果不對運行時異常進(jìn)行處理,那么出現(xiàn)運行時異常之后,要么是線程中止,要么是主程序終止。
如果不想終止,則必須捕獲所有的運行時異常,決不讓這個處理線程退出。隊列里面出現(xiàn)異常數(shù)據(jù),正常的處理應(yīng)該是把異常數(shù)據(jù)舍棄,然后記錄日志。不應(yīng)該因為異常數(shù)據(jù)的存在而影響下面對正常數(shù)據(jù)的處理。
2)非運行時異常
非運行時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類。比如:IOException、SQLException等以及用戶自定義的Exception異常。對于這種異常,Java編譯器強(qiáng)制要求我們必需對出現(xiàn)的這些異常進(jìn)行catch并處理,否則程序就不能編譯通過。所以,面對這種異常不管我們是否愿意,都要寫一大堆catch塊去處理可能的異常。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程