try catch 自定义捕获异常
当我们完成一个程序时,如果没有异常捕获的话,用户使用时会出现许多bug。而加入异常捕获之后便会提醒用户使用时避免产生不必要的错误。具体操作实现如下:
首先创造一个MyException类,继承自Exception类,在MyException的方法中调用父类的方法,返回错误的提示信息。
package classTest; public class MyException extends Exception { private static final long serialVersionUID = 1L; public MyException(String message) { super(message); } }
使用该类判断录入的字符是否是正整数类型,如果不是,返回相关的错误信息;否则根据相关的条件返回成绩的评定等级。
使用try catch时,在代码产生的异常可以被throw语句抛出并被catch语句捕获。(必须被抛出才能被捕获)
必须将可能存在异常的代码放在try代码块内,才能捕获可能抛出的异常。一个try类可以对应一个或者多个catch类,一但抛出的异常被一个catch捕获,其他就不会执行。
完整的try catch语句还有finally语句,用来捕获其他情况。
package classTest; import java.util.Scanner; public class studentGrade { static Scanner sc = null; static int check(String c) throws MyException { if (!c.matches("^\\-?[0-9]+$")) { // 匹配所有的整数 throw new MyException("请输入整数数字!"); } if ((Integer.valueOf(c)) > 100 || (Integer.valueOf(c)) < 0) { // 判断是否为规定范围的整数 throw new MyException("请输入0到100之间的整数!"); } return Integer.valueOf(c); } public static void main(String[] args) { System.out.println("请输出一个整数:"); String c = null; sc = new Scanner(System.in); c = sc.nextLine(); try { int a = check(c); if (a <= 100 && a >= 90) { System.out.println("优!"); } else if (a >= 80 && a < 90) { System.out.println("良!"); } else if (a >= 70 && a < 80) { System.out.println("中!"); } else if (a >= 60 && a < 70) { System.out.println("及格!"); } else { System.out.println("不及格!"); } } catch (MyException e) { System.out.println(e); // 输出捕获的异常信息 } finally { System.out.println("检查异常完成!"); // finally语句块的执行 } } }
运行结果如下: