java中使用try-catch-finally一些值得注意的事(必看)
我們知道,try負(fù)責(zé)圈定可能會(huì)出異常的代碼;catch負(fù)責(zé)處理try中可能異常的處理,如記錄錯(cuò)誤日志,使業(yè)務(wù)能夠正常運(yùn)行;finally負(fù)責(zé)資源釋放等善后工作,無論有無異常都必須要執(zhí)行的代碼,一般都是放在finally中的。如果catch和finally也會(huì)出現(xiàn)異常,那么會(huì)是什么效果呢?
try { // java.lang.ArithmeticException int a = 1 / 0; } catch (Exception e) { System.out.println("catch"); // java.lang.NullPointerException String value = null; System.out.println(value.length()); } finally { System.out.println("finally"); // java.lang.ArrayIndexOutOfBoundsException int[] array = {1, 2, 3}; System.out.println(array[6]); }
這段代碼最終的執(zhí)行結(jié)果是:會(huì)拋出ArrayIndexOutOfBoundsException。try中代碼出現(xiàn)異常,會(huì)執(zhí)行對(duì)應(yīng)的catch;
catch出現(xiàn)異常,會(huì)執(zhí)行finally;如果finally也出現(xiàn)異常,由于沒有進(jìn)行處理,就會(huì)直接拋給JVM。如果這里沒有使用
finally塊,那么會(huì)拋出NullPointerException。
這也就是說:catch和finally中出現(xiàn)的異常也會(huì)直接拋出,如果我們沒有進(jìn)行處理,就會(huì)在運(yùn)行時(shí)產(chǎn)生錯(cuò)誤。這提醒我們,如果catch和finally也可能出現(xiàn)異常,那么必須要再次使用try-catch進(jìn)行處理。
以上這篇java中使用try-catch-finally一些值得注意的事(必看)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot如何實(shí)現(xiàn)分離資源文件并打包
這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)分離資源文件并打包,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Maven實(shí)現(xiàn)自己的starter依賴
本文主要介紹了Maven實(shí)現(xiàn)自己的starter依賴,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04SpringBoot項(xiàng)目啟動(dòng)后立馬自動(dòng)關(guān)閉的解決方案
這篇文章主要介紹了SpringBoot項(xiàng)目啟動(dòng)后立馬自動(dòng)關(guān)閉的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03SpringBoot整合MyBatis實(shí)現(xiàn)樂觀鎖和悲觀鎖的示例
這篇文章主要介紹了SpringBoot整合MyBatis實(shí)現(xiàn)樂觀鎖和悲觀鎖的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09