更新時(shí)間:2019-10-07 來(lái)源:黑馬程序員 瀏覽量:
在實(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í)異常
在Java中, Exception類中除了 RuntimeException類及其子類都是編譯時(shí)異常。編譯時(shí)異常的特點(diǎn)是Java編譯器會(huì)對(duì)其進(jìn)行檢查,如果出現(xiàn)異常就必須對(duì)異常進(jìn)行處理,否則程序無(wú)法通過(guò)編譯。
處理編譯時(shí)期的異常有兩種方式,具體如下:
(1)使用try…catch語(yǔ)句對(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)行檢查,也就是說(shuō),當(dāng)程序中出現(xiàn)這類異常時(shí),即使沒(méi)有使用try…catch語(yǔ)句捕獲或使用throws關(guān)鍵字聲明拋出,程序也能編譯通過(guò)。運(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[6]);
上面代碼中,由于數(shù)組arr的 length為5,最大角標(biāo)應(yīng)為4,當(dāng)使用arr[6]訪問(wèn)數(shù)組中的元素就會(huì)發(fā)生數(shù)組角標(biāo)越界的異常。
以上我們介紹了“Java編譯異常與運(yùn)行異?!毕M麑?duì)您有所幫助,如果想了深入學(xué)習(xí)java知識(shí)請(qǐng)點(diǎn)擊頁(yè)面咨詢按鈕了解,黑馬程序員java課程詳情。