首先创造一个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