Java中try、catch的使用方法
Java中有兩種處理異常的方式,分別是用throws拋出異常、用try、catch捕獲異常。
try-catch
在Java
try-catch語句的語法格式:
try{
//代碼塊
}catch(Exception1 e){
//拋出異常后所要進(jìn)行的操作
}
當(dāng)try語句當(dāng)中捕獲到異常時(shí),會(huì)將異常拋出到catch語句中匹配異常類型,當(dāng)異常和catch后面的異常類型相匹配時(shí),則catch語句將會(huì)執(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ā)生異常,就會(huì)在依次在各個(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)文章
詳解CopyOnWriteArrayList是如何保證線程安全
這篇文章主要為大家介紹了CopyOnWriteArrayList是如何保證線程安全講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
詳解在IDEA中使用MyBatis Generator逆向工程生成代碼
這篇文章主要介紹了詳解在IDEA中使用MyBatis Generator逆向工程生成代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
SpringKafka錯(cuò)誤處理(重試機(jī)制與死信隊(duì)列)
Spring Kafka提供了全面的錯(cuò)誤處理機(jī)制,通過靈活的重試策略和死信隊(duì)列處理,下面就來介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04
詳解spring boot jpa整合QueryDSL來簡化復(fù)雜操作
這篇文章主要介紹了詳解spring boot jpa整合QueryDSL來簡化復(fù)雜操作,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea)
這篇文章主要介紹了springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java中Caffeine本地緩存項(xiàng)目實(shí)例
這篇文章主要介紹了Java中Caffeine本地緩存項(xiàng)目實(shí)例,Caffeine是一個(gè)高性能Java 緩存庫,使用Java8對Guava緩存重寫版本,在Spring Boot 2.0中將取代Guava,使用spring.cache.cache-names屬性可以在啟動(dòng)時(shí)創(chuàng)建緩存,需要的朋友可以參考下2023-10-10
分享Java性能調(diào)優(yōu)的11個(gè)實(shí)用技巧
這些建議中的大多數(shù)都是基于Java的,但是也不一定,也有一些是可以應(yīng)用于所有的應(yīng)用程序和編程語言的。在我們分享基于Java的性能調(diào)優(yōu)技巧之前,讓我們先討論一下這些通用的性能調(diào)優(yōu)技巧2017-11-11

