搜尋
首頁Javajava教程java異常如何捕捉與處理

java異常如何捕捉與處理

Aug 19, 2020 am 10:43 AM
java例外

java異常捕獲與處理的方法:1、throws關鍵字,由系統自動將所捕獲的異常信息拋給上級調用方法;2、throw的作用是手工拋出異常類的實例化對象;3、RunException是Exception的子類,由使用者選擇是否進行處理。

java異常如何捕捉與處理

【相關學習推薦:java基礎教學

java異常捕捉與處理的方法:

一、異常處理的使用

由於finally區塊是可以省略的,異常處理格式可以分為三類:try{ }——catch { }、try{ }——catch{ }——finally{ }、try{ }——finally{ }。

 1 public class DealException
 2 {
 3     public static void main(String args[])
 4     {    
 5         try
 6         //要检查的程序语句
 7         {
 8             int a[] = new int[5];
 9             a[10] = 7;//出现异常
10         }
11         catch(ArrayIndexOutOfBoundsException ex)
12         //异常发生时的处理语句
13         {
14             System.out.println("超出数组范围!");
15         }
16         finally
17         //这个代码块一定会被执行
18         {
19             System.out.println("*****");
20         }
21         System.out.println("异常处理结束!");
22     }
23 }

可以看出,在異常捕捉的過程中要進行兩個判斷,第一是try程式區塊是否有異常產生,第二是產生的異常是否和catch()括號內想要捕捉的異常相同。

那麼,如果出現的異常和catch()內想要捕捉的異常不相同時怎麼辦呢?事實上我們可以在一個try語句後面跟上多個異常處理catch語句,來處理多種不同類型的異常。

 1 public class DealException
 2 {
 3     public static void main(String args[])
 4     {    
 5         try
 6         //要检查的程序语句
 7         {
 8             int a[] = new int[5];
 9             a[0] = 3;
10             a[1] = 1;
11             //a[1] = 0;//除数为0异常
12             //a[10] = 7;//数组下标越界异常
13             int result = a[0]/a[1];
14             System.out.println(result);
15         }
16         catch(ArrayIndexOutOfBoundsException ex)
17         //异常发生时的处理语句
18         {
19             System.out.println("数组越界异常");
20             ex.printStackTrace();//显示异常的堆栈跟踪信息
21         }
22         catch(ArithmeticException ex)
23         {
24             System.out.println("算术运算异常");
25             ex.printStackTrace();
26         }
27         finally
28         //这个代码块一定会被执行
29         {
30             System.out.println("finally语句不论是否有异常都会被执行。");
31         }
32         System.out.println("异常处理结束!");
33     }
34 }

上述範例中ex.printStackTrace();就是對異常類別物件ex的使用,輸出了詳細的異常堆疊追蹤訊息,包括異常的類型,異常發生在哪個套件、哪個類別、哪個方法以及異常發生的行號。

二、throws關鍵字

throws宣告的方法表示該方法不處理異常,而由系統自動將所捕獲的異常訊息拋給上級呼叫方法。

 1 public class throwsDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int[] a = new int[5];
 6         try
 7         {
 8             setZero(a,10);
 9         }
10         catch(ArrayIndexOutOfBoundsException ex)
11         {
12             System.out.println("数组越界错误!");
13             System.out.println("异常:"+ex);
14         }
15         System.out.println("main()方法结束。");
16     }
17     private static void setZero(int[] a,int index) throws ArrayIndexOutOfBoundsException
18     {
19         a[index] = 0;
20     }
21 }

 throws關鍵字拋出異常,「ArrayIndexOutOfBoundsException」表明setZero()方法可能存在的異常類型,一旦方法出現異常,setZero()方法自己並不處理,而是將異常提交給它的上級呼叫者main()方法。

三、throw關鍵字

throw的作用是手工拋出異常類別的實例化物件。

 1 public class throwDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         try
 6         {
 7             //抛出异常的实例化对象
 8             throw new ArrayIndexOutOfBoundsException("\n个性化异常信息:\n数组下标越界");
 9         }
10         catch(ArrayIndexOutOfBoundsException ex)
11         {
12             System.out.println(ex);
13         }
14     }
15 }

我們能發現,throw好像屬於沒事找事,引發運行期異常,並自訂提示訊息。事實上,throw通常和throws合併使用,拋出的是程式中已經產生的例外類別實例。

 ExceptionDemo

輸出結果:

setZero方法開始:

setZero方法結束。

異常:java.lang.ArrayIndexOutOfBoundsException: 10

main()方法結束!

四、RuntimeException類別

Exception和RuntimeException的差別:

Exception:強制性要求使用者必須處理;

RunException :是Exception的子類,由使用者選擇是否進行處理。

java異常如何捕捉與處理

                               

#五、自訂例外類別中

##1使用時使用父類別的大量的方法,也可自己編寫方法來處理特定的事件。 Java提供用繼承的方式運行使用者自己寫的異常類別。

 1 class MyException extends Exception
 2 {
 3     public MyException(String message)
 4     {
 5         super(message);
 6     }
 7 }
 8 public class DefinedException
 9 {
10     public static void main(String[] args) 
11     {
12         try
13         {
14             throw new MyException("\n自定义异常类!");
15         }
16         catch(MyException e)
17         {
18             System.out.println(e);
19         }
20     }
21 }

相關學習推薦:

程式設計影片

#

以上是java異常如何捕捉與處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器