首先创造一个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 }
执行如下:


来源:https://www.cnblogs.com/cxy0210/p/11761861.html