异常类、解决异常的三种throw、throws,try catch、单双列集合图详解

一、异常

  1. Throwable 所有的异常的父类或者是间接父类,必须是Throwable子类或者是自身的异常才需要进行处理(语言中所有错误或异常的父类)
    在这里插入图片描述

  2. Error 表示非常严重的异常一般都是由JVM抛出的(错误)异常,这种异常不需要进行处理,避免这种异常的发生

  3. Exception 表示不是非常严重的异常,不许进行处理

  4. RuntimeException 表示是运行时的异常

  5. 异常的分类
    **编译时异常:**在编时期,发生的异常,就是编译时的异常
    **运行时异常:**在程序运行期间,发生的异常,就是运行时的异常

  6. jvm处理异常
    A.在执行代码的时候,发生异常
    B.将异常信息封装Throwable类中
    C.如果自身不处理,会返回给调用者,一层一层往上进行抛出
    D.如果对异常不处理,则由jvm来进行处理
    E.打印堆栈信息(异常信息)终止程序

  7. 语法:
    try{
    } catch{
    }finally{
    //不管怎样都会执行finally方法,除非exit(0)等强制停止程序(杀死JVM虚拟机)运行
    //(return不行)遇到会先执行finally,再执行return语句
    **作用:**关闭IO流执行
    };

    try{ //每个catch如果符合的都会一 一执行
    }catch{
    }catch{};

    try{
    }finally{};//两者互不影响

  8. 执行的流程
    第一种情况:没有发生异常,执行try中的代码
    第二种情况: A.如果发生与声明的异常不匹配,则由jvm类处理 B.如果匹配,则执行 catch的代码
    匹配:发生的异常是声明异常本身或者是异常的父类都是可以匹配的

  9. 说明:
    A.在jdk1.7之后,如果声明多个异常, 可以使用 | 将多个异常进行连接,exception异常不用连接多个连接,因为就是父类
    B.声明的异常范围越小越好,便于开发人员解决问题

二、解决异常的三种throw、throws、try catch

  1. 第一种:throw 写在方法中,如果是(如:RuntimeException)运行时异常可以不用声明(throws)异常,直接抛出
package qf22020226;
public class Demo02 {
    public static void main(String[] args){
        double divide = divide(10.0, 5.0);
        System.out.println(divide);
    }
    public static double divide(double a,double b){
        if(b<0){
            throw new ArithmeticException("分母不能为空");
        }
        return a/b;
    }
}
  1. 第二种:throws 声明方法上,用来声明,给调用者进行处理
package qf22020226;
public class Demo02 {
    public static void main(String[] args){
        double divide = divide(10.0, 5.0);
        System.out.println(divide);
    }
    public static double divide(double a,double b)throws ArithmeticException{
        return a/b;
    }
}
  1. 第三种:使用try catch 处理过程中处理异常
package qf22020226;
public class Demo02 {
    public static void main(String[] args) {
        double a = 10.0;
        double b = 5.0;
        double sum = 0;
        try {
            sum = a/b;
        } catch (Exception e) {
            System.out.println("分母不能为空");
        }
        System.out.println(sum);
    }
}
  1. throw 与 throws 的比较:
    在这里插入图片描述

三、自定义异常类

  1. 重写父类方法(目的传异常信息给父类)声明的异常的范围必须是父类声明异常的子类以及其本身 ,异常声明的范围不能大于父类的范围
  2. 步骤: A.定义一个类来继承 Throwable 或者是其子类,调用父类的有参构造 传递异常信息
  3. 代码图解:
package qf22020226;

public class Demo02 {
    public static void main(String[] args) throws MyException {
        //方法1
        double divide = divide(10.0, 0);
        System.out.println(divide);
        //方法2
        try {
            System.out.println(divide(50.0,0));
        }catch (MyException myException){
            myException.printStackTrace();
        }
    }
    public static double divide(double a, double b) throws MyException {
        if(b < 0){
            throw new MyException("分母不能为零");
        }
        return a/b;
    }
}
class MyException extends Exception{
    public MyException(String message) {
        super(message);
    }
}

四、集合

  1. 用于存储数据的容器

  2. 集合与数组之间的比较
    A. 集合只能存引用数据类型 数组既可以基本数据类型,也可以存引用数据类型
    B.集合的长度是不固定的,数组的长度是固定的
    C.集合分类:

    单列集合:集合中的每一个元素都是独立的单元 在这里插入图片描述
    双列集合:集合找那个的元素都是以组为单位,以键值对的方式进行存储
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT阿生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值