在jdk中,定义了两种异常形式,一种是uncheked(未受检异常),一种是checked(受检异常),他们分别是这样表示:

java里面将派生于Error或者RuntimeException(比如空指针,1/0)的异常称为unchecked异常;

通俗一点来讲,当你编写的代码 在编译器层面来讲没有检测到代码到报错,只有当运行中的时候才可能有发生报错的情况。也可以理解成运行时异常,但也不完全是,只是在运行时会被jdk捕捉到报错

其他继承自java.lang.Exception得异常统称为Checked Exception,如IOException、TimeoutException等

剩下的为被用户捕捉到到,比如文件的操作(IOException),连接中间件(TimeOutException)等等一些异常,我们的编译器会检测到这些异常形式。

在spring 的事务中,默认情况下 非受检异常会被回滚,checked的异常不会被回滚; 那么怎么解决这种问题呢? 只需要在@Transactional注解上添加一个rollbackFor = Exception.class即可