异常问题解决

wangxiaojian-lina / 2024-10-23 / 原文

    异常:java程序编译或运行过程中出现的问题
    Throwable:
        Error: 表示非常严重的问题,自己无法解决的问题
        Exception:
            除了RuntimeException其它异常【编译时期异常】: 一般指的是异常尚未处理就编译了
            RuntimeException【运行时期异常】: 运行过程中报错了,一般情况下是因为语法逻辑不正确导致

    JVM遇到问题时,默认的处理方案是:停止程序,抛出错误。
##    异常的处理方案一 :
      1、try...catch...finally
         为了保证规范性尽量用try ... catch ..finally  catch捕获异常返回
      2.无论try中的代码是否出错,finally都会执行。
     finally一般来说,用作释放资源的作用。
try...catch使用注意事项:
     1、当try中出现异常时,JVM会对应创建一个异常类对象
     2、自上而下会与catch中的异常进行匹配,若匹配上就相当于处理了,执行catch中的逻辑
     3、若try中有多个异常,当第一个异常触发时,try中的其它后续代码都不会执行,JVM会对应创建一个异常类对象进行第二步匹配
     4、可以直接写一个catch里面是所有异常的父类、   catch (Exception e)
     5、若存在多个catch匹配,需要将父类异常往后写   
     6、若使用jdk新特性的写法的话,异常类之间不能存在继承系   
点击查看代码
        try {
            System.out.println(arr[8]);// newArrayIndexOutOfBoundsException()
            System.out.println(3/0);
        } catch (Exception e) {
            //void printStackTrace()
            //将此throwable和其追溯打印到标准错误流。
            e.printStackTrace();
        }finally{
System.out.println("who are you");
}

 System.out.println("i am wangjun");
##  异常的处理方案二 :  抛出异常
    throws: 抛出
    在方法的定义上抛出异常类, throws本身是不会处理异常的,只是当时方法内部不用处理了,
    但是当调用者调用有问题的方法时,需要调用者进行处理

    throw: 抛出
    在方法内部抛出异常对象,表示一个确定的异常

    注意:
        当调用者调用抛出运行时期异常的方法时,可以选择不去处理,也能运行。
        当调用者调用抛出编译时期异常的方法是,必须要进行处理,否则编译不通过无法运行。

   小故事理解 throw throws try...catch 的使用:
        江川是一个快乐的小矿工,有一天他挖到了一个远古炸弹💣【throw】,往洞外运输【throws】,运输给了矿厂管理人员
        管理员对炸弹💣进行处理【try..catch】
点击查看代码
        try{
            fun3();
        }catch (Exception e){
            e.printStackTrace();
        }


    }

    public static void fun3() throws Exception{
        int i= 0;
        if(i==0){
            throw new ArithmeticException();
        }else {
            System.out.println(5/i);
        }
    }