本文實例為大家分享了java異常處理的具體代碼,供大家參考,具體內容如下
一.異常的分類
1.由java虛擬機拋出的異常(error):程序無法處理的問題,用戶不用去進行處理(虛擬機錯誤丶內存溢出錯誤丶線程死鎖)
2.exception異常:程序本身可以進行處理的異常
1).非檢查異常(unchecked exception):編譯器不需要強制處理的異常(空指針異常丶數組下標越界異常丶算數異常丶類型轉換異常)
2).檢查異常(checked exception):編譯器需要強制處理的異常(ioexception丶sqlexception)
二.異常處理的兩種方法
1.通過try丶catch和finally關鍵字在當前位置進行異常處理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public static void main(string[] a){ int sum = 0 ; while ( true ){ try { //以兩數相除除數不能為0進行舉例 system.out.println( "請依次輸入兩個數值進行除法操作:" ); scanner scanner = new scanner(system.in); int one =scanner.nextint(); int two =scanner.nextint(); sum = one/two; system.out.println( "最終結果為:" +sum); } catch (exception e) { //用catch將錯誤進行捕捉,這里可以使用多重catch,對于不同的錯誤進行捕捉,但最后的catch建議為exception。 // todo auto-generated catch block //顯示錯誤堆棧信息 e.printstacktrace(); } finally { system.out.print( "無論有沒有錯誤我都會執行" ); } } } } |
輸出:
2.通過try丶catch丶finally丶throw和throws拋出異常給函數調用者進行處理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class try { public static void main(string[] a){ try { function(); //在函數調用者處對異常進行處理 } catch (exception e) { e.printstacktrace(); } } static void function() throws exception{ //通過throws將異常進行拋出 system.out.println( "請輸入一個數值進行判斷:" ); scanner scanner = new scanner(system.in); int one =scanner.nextint(); if (one< 100 ) { throw new exception(); //若輸入的數值小于100則拋出異常 } } } |
輸出:
3.自定義異常進行處理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class myexception extends exception{ //自定義異常,通過super方法傳遞異常信息給父級 public myexception(){ super ( "這是我自定義的異常" ); } } public class try { public static void main(string[] a){ try { function(); } catch (myexception e) { e.printstacktrace(); } } static void function() throws myexception{ system.out.println( "請輸入一個數值進行判斷:" ); scanner scanner = new scanner(system.in); int one =scanner.nextint(); if (one< 100 ) { throw new myexception(); //將自定義異常進行拋出 } } } |
輸出:
三.異常鏈
有的時候我們會在處理一個異常的時候拋出一個新的異常,也就是異常的嵌套,但是最后我們得到的異常信息卻只有一個。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class try { public static void main(string[] a){ try { function1(); } catch (exception e) { e.printstacktrace(); } } static void function1() throws exception{ try { function2(); } catch (exception e){ throw new exception(); } } static void function2() throws exception{ try { function3(); } catch (exception e){ throw new exception(); } } static void function3() throws exception{ throw new exception(); } } |
輸入結果:
這樣的話顯示出的異常就只有一個了,那我們如果想讓這條異常鏈中的所有異常信息全部輸出該怎么辦呢?方法很簡單,我們在拋出異常的時候將異常對象也當作參數進行拋出就行了。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class try { public static void main(string[] a){ try { function1(); } catch (exception e) { e.printstacktrace(); } } static void function1() throws exception{ try { function2(); } catch (exception e){ throw new exception( "異常2" ,e); } } static void function2() throws exception{ try { function3(); } catch (exception e){ throw new exception( "異常2" ,e); } } static void function3() throws exception{ throw new exception( "異常3" ); } } |
運行結果:
到此,我們java中的異常便是描述完了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/ygxdbmx/archive/2018/10/03/9736189.html