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语句块的执行
         }
     }
 }

运行结果如下:

 

 

posted @ 2019-10-29 19:53  嘉禾旧木  阅读(750)  评论(0编辑  收藏  举报