異常處理 異常概述:在JAVA中主要是使用Throwable來(lái)表示出現(xiàn)的錯(cuò)誤或者異常。 首先在API說(shuō)明文檔,可以看出Throwabl是一個(gè)類(lèi),在java.lang包下,在lang包下的類(lèi)是可以直接使用不需要進(jìn)行導(dǎo)包操作。直接已知子類(lèi)有Error和Exception,同樣在使用Error和Exception時(shí)不需要導(dǎo)包,Throwable類(lèi)JAVA語(yǔ)言中所有錯(cuò)誤或異常的超類(lèi)。 如何在JAVA中表示一個(gè)錯(cuò)誤? Error類(lèi)來(lái)表示。用于指示合理的應(yīng)用程序不應(yīng)該試圖捕獲的嚴(yán)重問(wèn)題。這些嚴(yán)重問(wèn)題包括:服務(wù)器宕機(jī)、數(shù)據(jù)庫(kù)崩潰。以上兩個(gè)錯(cuò)誤都不是JAVA應(yīng)用工程師進(jìn)行處理,會(huì)有專(zhuān)門(mén)的運(yùn)維人員進(jìn)行負(fù)責(zé)維護(hù)操作。 如何在JAVA中表示一個(gè)異常? Exception類(lèi)來(lái)表示。異常才是JAVA工程師所能夠解決并且是必須解決。 JAVA工程師很少處理做錯(cuò)誤,主要負(fù)責(zé)處理異常。 異常主要分兩大類(lèi):編譯器異常、運(yùn)行時(shí)異常。 (JVM默認(rèn)如何處理異常?) JVM:是Java vitrual machine翻譯成中文就是JAVA虛擬機(jī)。在main函數(shù)收到異常時(shí)有兩種處理方式,第一種經(jīng)過(guò)執(zhí)行開(kāi)發(fā)人員編寫(xiě)的代碼處理異常,然后繼續(xù)運(yùn)行程序。 第二種Jvm有一個(gè)默認(rèn)的異常處理機(jī)制,就將該異常進(jìn)行處理,并且將該異常的名稱、異常的信息、異常出現(xiàn)的位置打印在控制臺(tái)上,同時(shí)將程序停止運(yùn)行。 編程人員進(jìn)行處理異常時(shí)依然有兩種方法:try...catch...finally和throws方式。 下面通過(guò)代碼的方式展示默認(rèn)處理異常方式。 此時(shí)計(jì)算2除以2的運(yùn)算,并且將結(jié)果打印出來(lái),在控制臺(tái)上的輸出結(jié)果為1;沒(méi)有異常報(bào)錯(cuò)。 隨后增加2除以0的運(yùn)算以及打印hello world的語(yǔ)句,在數(shù)學(xué)運(yùn)算中0不能夠作為被除數(shù)的存在,因此在控制臺(tái)上會(huì)進(jìn)行報(bào)錯(cuò)。 控制臺(tái)中顯示在主函數(shù)中存在名為ArithmeticException異常,該異常是由于運(yùn)算條件錯(cuò)誤而引起,比如一個(gè)整數(shù)“除以零”時(shí)就會(huì)拋出此異常,并且顯示異常在程序的第6行和第10行。這里也體現(xiàn)出虛擬機(jī)在默認(rèn)處理異常時(shí)會(huì)在發(fā)生異常后就強(qiáng)行終止程序,可以在控制臺(tái)中看到hello world并沒(méi)有顯示出來(lái),證明該語(yǔ)句沒(méi)有被執(zhí)行。Try...catch方式用于處理單個(gè)異常。這種方法有三種處理格式:try...catch、try...catch...finally以及try...finally。下面展示如何通過(guò)該方法處理異常。 其中try板塊用于異常檢測(cè)、catch板塊進(jìn)行處理異常、fianlly用于釋放資源使用。當(dāng)沒(méi)有異常發(fā)生時(shí)catch中代碼就不會(huì)被執(zhí)行,如果發(fā)生異常try中代碼會(huì)立刻將異常的對(duì)象賦值給catch中的變量名,執(zhí)行catch中的代碼。 在控制面板上有hello world輸出,可以看出經(jīng)過(guò)編碼后,即使出現(xiàn)異常程序依然能夠順利完整的執(zhí)行。 大家對(duì)Java異常學(xué)習(xí)還有什么問(wèn)題,可以在評(píng)論區(qū)留言,如果您喜歡這篇文章,懂懂小手,點(diǎn)個(gè)贊或者關(guān)注,謝謝大家支持! |
|