Java中try、catch的使用方法
Java中有兩種處理異常的方式,分別是用throws拋出異常、用try、catch捕獲異常。
try-catch
在Java
try-catch語句的語法格式:
try{
//代碼塊
}catch(Exception1 e){
//拋出異常后所要進行的操作
}
當try語句當中捕獲到異常時,會將異常拋出到catch語句中匹配異常類型,當異常和catch后面的異常類型相匹配時,則catch語句將會執(zhí)行。
舉個最基礎的例子,除數(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("編譯報錯,除數(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("編譯報錯,除數(shù)不能為0");
//因為異常類型不匹配所以該catch語句并未執(zhí)行
}
輸出結(jié)果:

一個try語句可以接多個catch語句
當有多個catch語句時,try部分的語句如果發(fā)生異常,就會在依次在各個catch語句中試圖匹配異常類型。
try{
int i = 1/0;//發(fā)生異常立即跳往catch語句中執(zhí)行,不執(zhí)行異常代碼下面的代碼
System.out.println("輸出結(jié)果為:" + i);
}catch(ArithmeticException e){
e.printStackTrace();
System.out.println("運算條件異常");
//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("運算條件異常");
}
這種寫法需要通過instanceof 進行判斷具體的異常類型。
兩種寫法的輸出都是一樣的:

在catch內(nèi)部,通常下面的方法輸出異常信息:
getMessage() 返回一個字符串對發(fā)生的異常進行描述。
printStackTrace() :打印異常信息出錯的位置及原因。
到此這篇關于Java中try、catch的使用的文章就介紹到這了,更多相關Java中try catch的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解CopyOnWriteArrayList是如何保證線程安全
這篇文章主要為大家介紹了CopyOnWriteArrayList是如何保證線程安全講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
詳解在IDEA中使用MyBatis Generator逆向工程生成代碼
這篇文章主要介紹了詳解在IDEA中使用MyBatis Generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
詳解spring boot jpa整合QueryDSL來簡化復雜操作
這篇文章主要介紹了詳解spring boot jpa整合QueryDSL來簡化復雜操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04

