美文网首页
java 基础之java异常体系

java 基础之java异常体系

作者: 尹楷楷 | 来源:发表于2021-03-20 14:11 被阅读0次

Java异常类的架构

image.png

RuntimeException/UnCheckException

定义: RuntimeException及其子类都被称为运行时异常。
特点: Java编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。
spring框架的@Transactional事务注解默认回滚RuntimeException。

例如,除数为零时产生的ArithmeticException异常,数组越界时产生的IndexOutOfBoundsException异常,fail-fail机制产生的ConcurrentModificationException异常、常见的空指针异常NullPointerException等,都属于运行时异常。

虽然Java编译器不会检查运行时异常,但是我们也可以通过throws进行声明抛出,也可以通过try-catch对它进行捕获处理。

如果产生运行时异常,则需要通过修改代码来进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情况的发生!

CheckException

定义: Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。
特点: Java编译器会检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。例如进行文件操作时遇到的IOException、线程sleep方法/obj的wait方法抛出的InterruptedException等都属于CheckException。

@Transactional事务注解默认不会回滚checkException,需要指定Exception父类,用法如下:
@Transactional(rollbackFor = Exception.class); 而且捕获后需要抛出给上层调用者,这样事务才会正常回滚。

被检查异常通常都是可以恢复的。

ERROR

定义: Error类及其子类。
特点: 和运行时异常一样,编译器也不会对错误进行检查。
当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如,VirtualMachineError就属于错误。

@Transactional事务注解默认回滚ERROR

例如我们常见的虚拟机内存栈溢出错误StackOverflowError。

熟悉java异常机制对我们使用spring声明式事务有很大帮助!这篇文章探讨了异常和spring事务的关系 https://www.jianshu.com/p/702ac5630b99

相关文章

  • java 基础之java异常体系

    Java异常类的架构 RuntimeException/UnCheckException 定义: RuntimeE...

  • Java基础之异常体系

    1. Java异常体系 ThrowableThrowable是整个异常体系的顶层父类,它有两个子类,分别是Erro...

  • Java基础之异常

    Java基础之异常 目录 异常简单介绍 ThrowableErrorException 异常分类 如何处理异常异常...

  • 面试重灾区:Java的异常体系怎么解?

    Java的异常体系结构 Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异...

  • java基础之异常处理

    1. java的异常体系包含在java.lang这个包默认不需要导入。 2. java异常体系 |——Throw...

  • Java基础之异常处理

    Java基础之异常处理 在Java程序中,异常分为编译异常以及运行时异常 编译异常:程序在编译期间就出现的异常,必...

  • Java 异常处理

    1. Java异常体系 Java异常体系设计的目的在于通过使用少量代码,实现大型、健壮、可靠程序。 1.1. 异常...

  • java异常体系及1.7中的try-with-resources

    1.java异常体系架构 异常指java运行过程出现的错误,在java中,将异常当作对象来处理,java.lang...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 异常

    Java异常体系 异常的分类 Java的异常分为两大类:Checked异常和Runtime异常(运行时异常)。所有...

网友评论

      本文标题:java 基础之java异常体系

      本文链接:https://www.haomeiwen.com/subject/fptwcltx.html