Error和Exception

异常的分类

在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)

Throwable:Error(错误)和 Exception(异常)就是 Throwable 的子类

在这里插入图片描述

从概念角度分析:

  1. Error:程序无法处理的系统错误,编译器不做检查;
  2. Exception:程序可以处理的异常,捕获后可能恢复;

Error(错误)
        是程序本身无法处理的错误,是不可查异常,通常表示运行应用程序出现的严重问题,大多数都是和程序编写者执行的操作无关,通常表示 JVM 出现的问题,例如:Java虚拟机运行错误,当为对象申请的内存空间超过JVM内存限制时,就会抛出 OutOfMemoryError,当异常发生JVM 就会终止线程的执行

Exception(异常)
        程序本身可以处理的异常
        其中 Exception 又分为两大类:运行时异常和编译异常

运行时异常:
        就是 RuntimeException 以及它的子类,常见的 RuntimeException 有:空指针异常,数组下标越界,算数异常,类型转换异常等,这些 RuntimeException 是不可查异常,即使没有用 try catch 捕获或者 throws 抛出异常,编译器也可以允许它运行

编译异常:
        除了 RuntimeException 和它的子类之外的 Exception 都是编译异常,例如 IOException ,不允许访问异常,方法未找到异常,字段未找到异常等,编译器会检查这部分异常,如果存在这部分的异常但是不捕获或者抛出异常,那么编译器不允许通过

Java中的 Throwable 主要分为:可查异常(checked Exception)和不可查异常(unchecked Exception)

总结:前者是程序无法处理的错误,后者是可以处理的异常。

在这里插入图片描述

        很容易出现的异常情况,Exception 中除了 RuntimeException 和它的子类外都是可查异常,特点是,可查异常会被编译器所检查,必须通过异常捕获或者异常抛出才能够正常编译,否则编译不通过 

可查异常:
        很容易出现的异常情况,Exception 中除了 RuntimeException 和它的子类外都是可查异常,特点是,可查异常会被编译器所检查,必须通过异常捕获或者异常抛出才能够正常编译,否则编译不通过

不可查异常:
        主要包括 Error 和 RuntimeException ,特点是,这部分异常不会被编译器检查,可以不捕获或者抛出就通过编译,发生这部分异常通常是因为编写的程序问题,需要找出程序本身的错误并且修改,而不是去捕获和抛出

从责任角度分析:

  1. Error:属于JVM需要负担的责任;
  2. Exception: RuntimeException(非受检异常)是程序应该负担的责任;

        Checked Exception (受检异常)可检查异常时Java编译器应该负担的责任。

常见Error和Exception

RuntimeException:

  1、NullPropagation:空指针异常;

  2、ClassCastException:类型强制转换异常

  3、IllegalArgumentException:传递非法参数异常

  4、IndexOutOfBoundsException:下标越界异常

  5、NumberFormatException:数字格式异常

非RuntimeException:

  1、ClassNotFoundException:找不到指定class的异常

  2、IOException:IO操作异常

Error:

  1、NoClassDefFoundError:找不到class定义的异常

  2、StackOverflowError:深递归导致栈被耗尽而抛出的异常

  3、OutOfMemoryError:内存溢出异常

以上内容属于个人笔记整理,如有错误,欢迎批评指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值