try catch 自定義捕獲異常


首先創造一個MyException類,繼承自Exception類

代碼實現如下:

繼承自Exception類,在MyException的方法中調用父類的方法,返回錯誤的提示信息。

1 public class MyException extends Exception {
2 
3     public MyException(String message) {
4         super(message);
5     }
6 }

使用該類判斷錄入的字符是否是正整數類型,如果不是,返回相關的錯誤信息;否則根據相關的條件返回成績的評定等級。

使用try catch時,在代碼產生的異常可以被throw語句拋出並被catch語句捕獲。(必須被拋出才能被捕獲)

必須將可能存在異常的代碼放在try代碼塊內,才能捕獲可能拋出的異常。一個try類可以對應一個或者多個catch類,一但拋出的異常被一個catch捕獲,其他就不會執行。

 1 import java.util.Scanner;
 2 
 3 public class students {
 4     static Scanner sc=null;
 5     
 6     static int check(String c) throws MyException {
 7         if(!c.matches("^\\-?[0-9]+$")) {  //匹配所有的整數
 8             throw new MyException("請輸入整數數字!");
 9         }
10         if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) {   
11          throw new MyException("請輸入0到100之間的整數!");
12         }
13         
14         return Integer.valueOf(c);
15     }
16     
17     public static void main(String[] args)  {
18         System.out.println("請輸出一個整數:");
19         String c=null;
20         
21         sc=new Scanner(System.in);
22         c=sc.nextLine();
23         try {
24         int a=check(c);
25         if(a<=100&&a>=90) {
26             System.out.println("優!");
27         } 
28         else if(a>=80&&a<90) {
29             System.out.println("良!");
30         } 
31         else if(a>=70&&a<80){
32             System.out.println("中!");
33         }
34         else if(a>=60&&a<70) {
35         System.out.println("及格!");
36         }
37         else{
38             System.out.println("不及格!");
39         }
40         }
41         catch (MyException e) {
42             System.out.println(e);
43         }
44 
45 }
46 }

程序截圖如下:

 

 

 

 

 

 

 除此,完整的try catch語句還有finally語句,該語句一般都會執行,只在以下幾種方式下不會執行:

1.在finally語句塊中發生異常。

2.在前面的代碼中使用了System.exit(0)語句

3.程序所在的線程死亡

4.關閉cpu

加入finally語句運行如下:

 1 import java.util.Scanner;
 2 
 3 public class students {
 4     static Scanner sc=null;
 5     
 6     static int check(String c) throws MyException {
 7         if(!c.matches("^\\-?[0-9]+$")) {  //匹配所有的整數
 8             throw new MyException("請輸入整數數字!");
 9         }
10         if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) {  //判斷是否為規定范圍的整數
11          throw new MyException("請輸入0到100之間的整數!");
12         }
13         
14         return Integer.valueOf(c);
15     }
16     
17     public static void main(String[] args)  {
18         System.out.println("請輸出一個整數:");
19         String c=null;
20         
21         sc=new Scanner(System.in);
22         c=sc.nextLine();
23         try {
24         int a=check(c);
25         if(a<=100&&a>=90) {
26             System.out.println("優!");
27         } 
28         else if(a>=80&&a<90) {
29             System.out.println("良!");
30         } 
31         else if(a>=70&&a<80){
32             System.out.println("中!");
33         }
34         else if(a>=60&&a<70) {
35         System.out.println("及格!");
36         }
37         else{
38             System.out.println("不及格!");
39         }
40         }
41         catch (MyException e) {
42             System.out.println(e);  //輸出捕獲的異常信息
43         }
44    finally {
45        System.out.println("檢查異常完成!");  //finally語句塊的執行
46    }
47 }
48 }

執行如下:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM