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 }

执行如下:

 

猜你喜欢

转载自www.cnblogs.com/cxy0210/p/11761861.html