在本教程中,我們將學(xué)習(xí)Java中的異常。我們將介紹Java中的錯誤,異常和不同類型的異常。
異常是程序執(zhí)行期間發(fā)生的意外事件。它影響程序指令流,從而導(dǎo)致程序異常終止。
發(fā)生異常的原因有很多。其中包括:
無效的用戶輸入
設(shè)備故障
網(wǎng)絡(luò)連接丟失
物理限制(磁盤內(nèi)存不足)
代碼錯誤
打開一個不可用的文件
這是Java中異常層次結(jié)構(gòu)的簡化圖。
從上圖可以看到,Throwable類是層次結(jié)構(gòu)中的根類。
請注意,層次結(jié)構(gòu)分為兩個分支:錯誤(Error)和異常(Exception)。
Error表示不可恢復(fù)的情況,例如Java虛擬機(JVM)內(nèi)存不足,內(nèi)存泄漏,堆棧溢出錯誤,庫不兼容,無限遞歸等。
錯誤通常是程序員無法控制的,我們不應(yīng)該嘗試處理錯誤。
程序可以捕獲并處理異常。
當(dāng)方法內(nèi)發(fā)生異常時,它將創(chuàng)建一個對象。該對象稱為異常對象。
它包含有關(guān)異常的信息,例如異常的名稱和說明以及發(fā)生異常時的程序狀態(tài)。
在下一個教程中,我們將學(xué)習(xí)如何處理這些異常。在本教程中,我們現(xiàn)在將重點介紹Java中不同類型的異常。
異常層次結(jié)構(gòu)還具有兩個分支:RuntimeException和IOException。
一個運行時異常發(fā)生由于編程錯誤。它們也稱為非檢查異常。
這些異常不在編譯時檢查,而是在運行時檢查。一些常見的運行時異常是:
API使用不當(dāng) - IllegalArgumentException
空指針訪問(缺少變量的初始化)- NullPointerException
越界數(shù)組訪問 - ArrayIndexOutOfBoundsException
將數(shù)字除以0 - ArithmeticException
你可以這樣想:“如果這是一個運行時異常,那就是你的錯”。
如果在使用變量之前檢查變量是否已初始化,則不會發(fā)生NullPointerException。
如果根據(jù)數(shù)組邊界測試數(shù)組索引,則不會發(fā)生ArrayIndexOutOfBoundsException。
IOException也稱為檢查異常。它們由編譯器在編譯時檢查,并提示程序員處理這些異常。
檢查異常的一些示例是:
嘗試打開不存在的文件會導(dǎo)致 FileNotFoundException
試圖讀取超過文件結(jié)尾的內(nèi)容
現(xiàn)在我們已經(jīng)了解了異常,我們將在下一教程中學(xué)習(xí)處理異常。