异常

异常

异常的分类

异常的处理

  • 异常处理的作用

    为了描述程序中不正常的操作

  • 异常产生的原因

    逻辑的不严谨,出乎意料的操作,不能穷举尽所有的可能

  • 处理异常的目的

    为了程序能在出现异常时,其他功能不受影响

  • 异常的处理方式:

    1.JVM处理

    JVM处理异常的过程:

    ​ 1).打印异常的信息 2).显示出异常的位置 3.)停止了程序

    2.自己处理

    try{}catch{}finally{}

    public class Test {
        public static void main(String[] args) {
            ATM atm = new ATM(20000);
            Scanner sc = new Scanner(System.in);
            // while(true){
            for (int i = 0; i < 5; i++) {
                System.out.println("请输入取钱金额:");
                int num = 0;
                try {
                    num = sc.nextInt();
                    atm.drawMoney(num);//在调用该方法的时候 不能超过余额 不能输入负数 不能够输入非数字字符
                    System.out.println("恭喜你,取钱成功!本次取钱金额为:" + num + "剩余金额:" + atm.getCashBalance());
                } catch (InputMismatchException input) {//这个异常还需要导包...
                    System.out.println("请输入整数");
                    sc.next();//利用next的功能 清楚缓存
                    continue;
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                    sc.next();
                    continue;//本次有异常 不执行本次后面的代码
                }
                System.out.println("是否退出Y/N");
                if ("y".equalsIgnoreCase(sc.next()))break;
            }
            //}
        }
    }
    
    

    try catch执行流程

    1. try{} 中包括可能发生异常的代码

    2. 当异常发生时,会去匹配 catch中对应的异常

    3. 异常发生的代码行之后的代码行将不会被执行(try{}中) 没有异常将会全部被执行

    4. 当catch中有对应类型的异常 则执行 对应catch中的语句

    5. 若catch中没有对应类型的异常 则会被JVM 接受异常

      注意事项

    • catch 中的异常 父类需要放最后 否则catch子类将无意义

    • 一旦异常被catch 将不会影响 try catch之后的代码 执行

      throw 和 throws

    该方式是自己当前不做处理 谁调用我 谁处理 没人处理交给JVM处理

    throw: 利用throw关键字 在方法体中 产生一个异常

    throws:在方法声明的后面抛出异常,该异常有可能存在/不存在

    自定义异常

    通过翻看源码可知:"所有"异常的都是继承自Trowable且没有重写父类方法

    定义异常的意义:见名知意 . 异常发生时 通过异常类的信息快速锁定是发生了什么异常

    自定义异常 就是让自己定义的类继承 Exception 或 RuntimeException 重写构造 可以根据需求重写方法

posted @ 2022-06-09 20:45  ACMAN-Mr.Lee  阅读(27)  评论(0编辑  收藏  举报