try catch 事务不会滚

Posted 易连山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try catch 事务不会滚相关的知识,希望对你有一定的参考价值。

在spring机制中,在配置事务后,如果采用try catch 捕获异常后,因为异常已经被捕获,所以事务不会滚,从而产生许多脏数据。
解决办法:
1.在catch中抛出异常,(throw new RuntimeException("");)且为运行时异常,抛出普通异常不会滚。
2.如果为注解配置,那么可以将 try (method) catch 的method,单独提出成一个方法,那么在此方法上增加注解@Transactional,那么此方法会被会滚,
且异常可以正常捕获。
合理使用try catch 。在代码重构时,发现许多不合理的使用,产生了许多脏数据,从而导致一些偶然的用户保障,但是问题却无法定位。

以上是关于try catch 事务不会滚的主要内容,如果未能解决你的问题,请参考以下文章

spring事务管理中,用try-catch处理了异常,事务也会回滚?

Spring事务管理回滚问题

Spring事务控制和回滚

sql try/catch rollback/commit - 防止回滚后的错误提交

spring配置了事务,抛出异常不回滚

spring事物回滚机制 (事务异常回滚,捕获异常不抛出就不会回滚)