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

Java編譯異常與運(yùn)行異常分別是什么?

更新時(shí)間:2019-10-07 來源:黑馬程序員 瀏覽量:

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


1570432288225_java異常處理.jpg

 


1、編譯時(shí)異常

在Java中, Exception類中除了 RuntimeException類及其子類都是編譯時(shí)異常。編譯時(shí)異常的特點(diǎn)是Java編譯器會(huì)對(duì)其進(jìn)行檢查,如果出現(xiàn)異常就必須對(duì)異常進(jìn)行處理,否則程序無法通過編譯。

處理編譯時(shí)期的異常有兩種方式,具體如下:

(1)使用try…catch語句對(duì)異常進(jìn)行捕獲。

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

 

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

RuntimeException類及其子類都是運(yùn)行時(shí)異常。運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)對(duì)其進(jìn)行檢查,也就是說,當(dāng)程序中出現(xiàn)這類異常時(shí),即使沒有使用try…catch語句捕獲或使用throws關(guān)鍵字聲明拋出,程序也能編譯通過。運(yùn)行時(shí)異常一般是由程序中的邏輯錯(cuò)誤引起的,在程序運(yùn)行時(shí)無法恢復(fù)。比如通過數(shù)組的角標(biāo)訪問數(shù)組的元素時(shí),如果超過了數(shù)組的最大角標(biāo),就會(huì)發(fā)生運(yùn)行時(shí)異常,代碼如下所示:

 

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

 

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

 

以上我們介紹了“Java編譯異常與運(yùn)行異常”希望對(duì)您有所幫助,如果想了深入學(xué)習(xí)java知識(shí)請(qǐng)點(diǎn)擊頁面咨詢按鈕了解,黑馬程序員java課程詳情。

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