连续两次回滚的效果

时间:2016-03-04 07:39:02

标签: transactions try-catch

我在Java中有一个类A,它在类B中调用另一个方法b。调用的方法b执行提交。然后在A中,我尝试使用2 catch,如下所示:

try {
     does a commit here
} catch (boom) {
     does a rollback here
} catch(baam) {
     does another rollback here
}

我想知道的是,第二次回滚是否取消第一次回滚?就像提交将var x更改为20一样,第一次回滚会将var x更改为其原始值10但第二次回滚会将其更改回20?

1 个答案:

答案 0 :(得分:0)

不可能回滚已经回滚的东西,它根本就没有操作。取决于特定的API,在现代Java框架/应用程序服务器中,最好只在事务上设置setRollbackOnly()标志并将其留给应用程序服务器。

无论如何,在这种情况下实际上只能执行一次回滚。如果出现Boom异常或将发生Baam异常,它们不会立即发生。