zoukankan      html  css  js  c++  java
  • 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语句块的执行
             }
         }
     }

    运行结果如下:

     

  • 相关阅读:
    我的架构经验小结(四)-- 实战中演化的三层架构
    DCFramework 动态分布式计算框架(01)-- 基础结构
    XNA基础(01) —— 游戏循环
    使用动态代理记录方法执行的时间
    高性能的大型系统经验 -- 数据查询与分页
    成功的捷径?
    如何激励你的员工?
    DCFramework 动态分布式计算框架(00) -- 序
    在应用程序之间传递动态程序集
    圈 Circle--ESBasic 可复用的.NET类库(03)
  • 原文地址:https://www.cnblogs.com/best-hym/p/11997054.html
Copyright © 2011-2022 走看看