Java中try、catch的使用方法
Java中有兩種處理異常的方式,分別是用throws拋出異常、用try、catch捕獲異常。
try-catch
在Java
try-catch語句的語法格式:
try{ //代碼塊 }catch(Exception1 e){ //拋出異常后所要進(jìn)行的操作 }
當(dāng)try語句當(dāng)中捕獲到異常時(shí),會將異常拋出到catch語句中匹配異常類型,當(dāng)異常和catch后面的異常類型相匹配時(shí),則catch語句將會執(zhí)行。
舉個(gè)最基礎(chǔ)的例子,除數(shù)不能為0
try中的異常與catch后面的異常類型匹配的情況:
try{ int i = 1/0;//發(fā)生異常立即跳往catch語句中執(zhí)行,不執(zhí)行異常代碼下面的代碼 System.out.println("輸出結(jié)果為:" + i); }catch(ArithmeticException e){ e.printStackTrace(); System.out.println("編譯報(bào)錯(cuò),除數(shù)不能為0"); }
輸出結(jié)果:
try中拋出的異常與catch后面的異常類型不匹配的情況:
try{ int i = 1/0;//發(fā)生異常立即跳往catch語句中執(zhí)行,不執(zhí)行異常代碼下面的代碼 System.out.println("輸出結(jié)果為:" + i); }catch(NullPointerException e){ e.printStackTrace(); System.out.println("編譯報(bào)錯(cuò),除數(shù)不能為0"); //因?yàn)楫惓n愋筒黄ヅ渌栽揷atch語句并未執(zhí)行 }
輸出結(jié)果:
一個(gè)try語句可以接多個(gè)catch語句
當(dāng)有多個(gè)catch語句時(shí),try部分的語句如果發(fā)生異常,就會在依次在各個(gè)catch語句中試圖匹配異常類型。
try{ int i = 1/0;//發(fā)生異常立即跳往catch語句中執(zhí)行,不執(zhí)行異常代碼下面的代碼 System.out.println("輸出結(jié)果為:" + i); }catch(ArithmeticException e){ e.printStackTrace(); System.out.println("運(yùn)算條件異常"); //try語句捕獲的異常與該catch語句后的異常相匹配,所以執(zhí)行該catch語句 }catch(NullPointerException e){ e.printStackTrace(); System.out.println("空指針異常"); //try語句捕獲的異常與該catch語句后的異常不匹配,所以不執(zhí)行該catch語句 }
JDK1.7之后還有一種不常用的寫法:
try{ int i = 1/0;//發(fā)生異常立即跳往catch語句中執(zhí)行,不執(zhí)行異常代碼下面的代碼 System.out.println("輸出結(jié)果為:" + i); }catch (NullPointerException | ArithmeticException e) { e.printStackTrace(); if (e instanceof NullPointerException) System.out.println("空指針異常"); if (e instanceof ArithmeticException) System.out.println("運(yùn)算條件異常"); }
這種寫法需要通過instanceof 進(jìn)行判斷具體的異常類型。
兩種寫法的輸出都是一樣的:
在catch內(nèi)部,通常下面的方法輸出異常信息:
getMessage() 返回一個(gè)字符串對發(fā)生的異常進(jìn)行描述。
printStackTrace() :打印異常信息出錯(cuò)的位置及原因。
到此這篇關(guān)于Java中try、catch的使用的文章就介紹到這了,更多相關(guān)Java中try catch的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析
這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Spring中的BeanFactory與FactoryBean區(qū)別詳解
這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個(gè)接口,它是spring中的一個(gè)工廠,FactoryBean也是一個(gè)接口,實(shí)現(xiàn)了3個(gè)方法,通過重寫其中方法自定義生成bean,需要的朋友可以參考下2024-01-01SpringBoot?Security使用MySQL實(shí)現(xiàn)驗(yàn)證與權(quán)限管理
安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會出現(xiàn)問題,這篇文章主要介紹了SpringBoot安全管理Spring?Security基本配置2022-11-11自定義一個(gè)簡單的JDBC連接池實(shí)現(xiàn)方法
下面小編就為大家分享一篇自定義一個(gè)簡單的JDBC連接池實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12