1、异常的继承结构
image.png
(1)Throwable超类,所有异常都继承自该超类;
(2)Error是Unchecked Exception,例如java虚拟机出现错误,不应该捕获也不应该抛出error异常
(3)Exception checked Exception
(4)RuntimeException 也是Unchecked Exception,表示程序出错了,应该去修补程序,而不是捕获这个异常。
(上图绿色部分,也都是Unchecked Exception;RuntimeException的子类,都表示程序的逻辑错误,都应该是去修补程序,而不是捕获。)
(5)黄色部分,表示的是无效,不是程序中可以预测的。比如无效的用户输入,文件不存在。捕获或者抛出!
(6)spring声名式的事务,中如果被注解的数据库操作,操作中发生了绿色部分的Unchecked Exception异常,所有的数据库都会回滚。checked Exception 情况下spring不会默认回滚,还是会提交,可以捕获并抛出一个runtimeException来触发回滚。
网友评论