Java異常小結(jié)
關(guān)于java的異常,剛接觸java的同學(xué)肯定非常陌生。其實(shí)他跟c中的出錯(cuò)判斷是類(lèi)似的。在一個(gè)程序中難免會(huì)出現(xiàn)一些問(wèn)題,但是在出現(xiàn)問(wèn)題以后怎么辦,這才是我們要考慮的問(wèn)題。
我們來(lái)看看c語(yǔ)言中的出錯(cuò)判斷,這種出錯(cuò)判斷完全是程序員自己編寫(xiě)的,一般我們用”return -1”做最后判斷的語(yǔ)句,然后可以判斷函數(shù)的返回值就可以知道函數(shù)有沒(méi)有出錯(cuò),但是這樣有沒(méi)有問(wèn)題?就比如說(shuō)在一個(gè)程序體內(nèi)有多個(gè)出錯(cuò)判斷的語(yǔ)句,我們這樣只能知道函數(shù)體出現(xiàn)了問(wèn)題,而不知道到底是那個(gè)出錯(cuò)判斷出現(xiàn)問(wèn)題。其實(shí)在c語(yǔ)言中也有這種情況的解決方法就是“goto”,這種方法一般很少用,很多情況下出現(xiàn)在驅(qū)動(dòng)的程序中。我們來(lái)看出錯(cuò)判斷在java中是怎么解決的,就是用異常。異常是怎么解決上面的問(wèn)題呢?其實(shí)在java中有個(gè)重要的思想,就是面向?qū)ο笏枷耄桶旬惓7庋b成一個(gè)類(lèi)叫“異常類(lèi)”。然后把每個(gè)可能出現(xiàn)的問(wèn)題都對(duì)應(yīng)一個(gè)相應(yīng)的“異常類(lèi)”這樣就可以把每個(gè)出現(xiàn)問(wèn)題的地方,都可以做相應(yīng)的操作。
我們首先來(lái)看java異常的分類(lèi),異常的基類(lèi)是Throwable類(lèi),Throwable類(lèi)下邊又分兩個(gè)大類(lèi),一個(gè)是Error類(lèi),一個(gè)是Exception類(lèi)。首先來(lái)看Error類(lèi),如果出現(xiàn)了這個(gè)錯(cuò)誤程序員是不能控制的, 因?yàn)樗?jīng)常是一些虛擬機(jī)的那些問(wèn)題,一般出現(xiàn)了這個(gè)問(wèn)題我們也不能去操作。然后再去看看Exception類(lèi),這個(gè)類(lèi)就是咱們?cè)诔绦蛑薪?jīng)常出現(xiàn)的類(lèi),這個(gè)類(lèi)在程序中也要分很多的子類(lèi)。我們就介紹最常見(jiàn)的兩個(gè)子類(lèi)“IOException”,“TimerunException”。IOException是關(guān)于文件異常的類(lèi),一般就是文件不存在,讀寫(xiě)出現(xiàn)問(wèn)題就用這個(gè)類(lèi)。 還有一個(gè)TimerunException類(lèi),這個(gè)類(lèi)就是程序在運(yùn)行期間出現(xiàn)的問(wèn)題,比如說(shuō)數(shù)組越界,除數(shù)不能為0,等等。
關(guān)于異常類(lèi)的使用是很簡(jiǎn)單的。一般使用三個(gè)語(yǔ)句塊來(lái)實(shí)現(xiàn)。Try{}catch(){}finally{}。其中finally是可選的,就是可寫(xiě)可不寫(xiě)。Try{}語(yǔ)句就是拋出異常,里面放的是可能出現(xiàn)問(wèn)題的語(yǔ)句塊。在java中如果語(yǔ)句出現(xiàn)了問(wèn)題,就會(huì)自動(dòng)的生成一個(gè)異常類(lèi)。Catch(){}語(yǔ)句就是捕獲異常。一般就是catch(Exception e){.. . . . }的形式,在這個(gè)語(yǔ)句里我們就可以針對(duì)相應(yīng)的異常做一些操作,比如說(shuō)提示什么的。還有一個(gè)是finally{}語(yǔ)句塊,這條語(yǔ)句如果存在,不管有沒(méi)有異常都會(huì)執(zhí)行。