try catch使用中,catch里已经手动抛出异常了,声明式事务还是失效问题

声明事务@Transactional 默认是遇到 RuntimeException抛出则回滚,下面代码将范围扩大,遇到Exception被抛出就回滚(210行)。

如果主要代码被try catch 了,catch 里面如果没有抛出异常(232行),吞没了异常,那么事务会失效。这一点大家已经都知道了。

现在要讨论是另一种值得注意的情况是 : 加上了finally 之后,catch里面即使抛出了异常,事务也会失效。如下代码事务是有效的,但如果将 234 和236 行注释放开,再运行代码事务就会失效了

 

 

posted @ 2020-12-24 13:07  Jason_52HZ  阅读(1326)  评论(0)    收藏  举报