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