首頁(yè)技術(shù)文章正文

Java中常見(jiàn)的異常類型有哪些?

更新時(shí)間:2021-11-12 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

   
在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)在程序編譯時(shí)期產(chǎn)生一些異常,而這些異常必須要進(jìn)行處理,這種異常被稱為編譯時(shí)期異常,也稱為checked異常。另外還有一種異常是在程序運(yùn)行時(shí)期產(chǎn)生的,這種異常即使不編寫(xiě)異常處理代碼,依然可以通過(guò)編譯,因此我們稱之為運(yùn)行時(shí)異常,也稱為unchecked異常。接下來(lái)分別對(duì)這兩種異常進(jìn)行詳細(xì)講解。

1.編譯時(shí)異常

在Exception的子類中,除了RuntimeException類及其子類外,其他子類都是編譯時(shí)異常。編譯時(shí)異常的特點(diǎn)是在程序編寫(xiě)過(guò)程中,Java編譯器就會(huì)對(duì)編寫(xiě)的代碼進(jìn)行檢查,如果出現(xiàn)比較明顯的異常就必須對(duì)異常進(jìn)行處理,否則程序無(wú)法通過(guò)編譯。處理編譯時(shí)異常有兩種方式,具體如下:

·使用try…catch語(yǔ)句對(duì)異常進(jìn)行捕獲處理。

·使用throws關(guān)鍵字聲明拋出異常,讓調(diào)用者對(duì)其處理。

2.運(yùn)行時(shí)異常

RuntimeException類及其子類都是運(yùn)行時(shí)異常。運(yùn)行時(shí)異常是在程序運(yùn)行時(shí)由Java虛擬機(jī)自動(dòng)進(jìn)行捕獲處理的,即使沒(méi)有使用try…catch語(yǔ)句捕獲或使用throws關(guān)鍵字聲明拋出,程序也能編譯通過(guò),只是在運(yùn)行過(guò)程中可能報(bào)錯(cuò)。

在Java中,常見(jiàn)的運(yùn)行時(shí)異常有多種,如表4-4所示。

表4-4常見(jiàn)運(yùn)行時(shí)異常

1636687055626_常見(jiàn)運(yùn)行異常.png


運(yùn)行時(shí)異常一般是由于程序中的邏輯錯(cuò)誤引起的,在程序運(yùn)行時(shí)無(wú)法恢復(fù)。例如通過(guò)數(shù)組的角標(biāo)訪問(wèn)數(shù)組的元素時(shí),如果超過(guò)了數(shù)組的最大角標(biāo),就會(huì)發(fā)生運(yùn)行時(shí)異常,代碼示例如下:

int [ ] arr=new int[5];
System.out.println (arr[5]);

上面代碼中,由于數(shù)組arr的長(zhǎng)度為5,最大角標(biāo)應(yīng)為4,當(dāng)使用arr[5]訪問(wèn)數(shù)組中的元素就會(huì)發(fā)生數(shù)組角標(biāo)越界的異常。






猜你喜歡:

Java中用戶如何自定義異常?【案例演示】

Java程序異常處理之try…catch和finally[黑馬程序員]

try-except語(yǔ)句與else子句聯(lián)合使用處理可能出現(xiàn)的程序異常

黑馬程序員java后端開(kāi)發(fā)工程師培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!