java异常的分类(常见的异常类型)

异常的分类

1. 编译时异常

在程序编译期间发生的异常,称为编译时异常,也称为受检查异常(Checked Exception)

public class Person {
    int age;
    private String name;
    private String gender;

    // 想要让该类支持深拷贝,覆写Object类的clone方法即可
    @Override
    public Person clone() {
        return (Person) super.clone();
    }
}

报错
在这里插入图片描述

我们会发现这段代码实际在IDEA写完后clone.()处会出现下划的红色波浪线
在这里插入图片描述这表明在这个异常在编译时就会出错,前面几个异常源码写在IDEA里面是不会有下划线的所以前面的是运行时异常,而这个就是编译时异常,但是编译时异常是可以解决的,可以通过throws关键字解决
就像下面这样

public class Person {
    int age;
    private String name;
    private String gender;
    
    // 想要让该类支持深拷贝,覆写Object类的clone方法即可
    @Override
    public Person clone() throws CloneNotSupportedException {
        return (Person) super.clone();
    }
}

如下图就没有报错了
在这里插入图片描述

2.运行时异常

在程序执行期间发生的异常,称为运行时异常,也称为非受检查异常(Unchecked Exception)RunTimeException以及其子类对应的异常,都称为运行时异常。比如:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException。

编译时出现的语法性错误,不能称之为异常。例如忘记写分号,这个也会出现下划线,但是这个不能称之为异常 此时编译过程中就会出错, 这是 “编译期” 出错。而运行时指的是程序已经编译通过得到class 文件了, 再由 JVM 执行过程中出现的错误.

异常的继承关系

异常既然是类,那么异常就是有继承关系的
如下图
在这里插入图片描述

  1. Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception
  2. Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError,一旦发生回力乏术。
  3. Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。我们平时所说的异常就是Exception。在这里插入图片描述
    java中所有的错误和异常均继承于Throwsable类,我们双敲shift进入搜索框,输入Throws类,如下图
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/f083b757325147f181ffbefb491ad64b.png

双击Throwsable类就能找该类的定义
如图
在这里插入图片描述

Error 错误

比如说,我们在没有终止条件的递归中就会出现StackOverflowError栈溢出错误

public class Test {
    public static  void func(){
        func();
    }
    public static void main(String[] args) {
        func();
    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值