连续两次回滚的效果

Effect of having two consecutive rollback

我在 Java 中有一个 class A,它调用 class 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?

已经回滚的东西是无法回滚的,根本就是无操作。取决于具体 API,在现代 Java 框架/应用程序服务器中,最好只在事务上设置 setRollbackOnly() 标志并将其留给应用程序服务器。

反正这里这种情况下其实只能执行一次回滚。要么Boom异常,要么Baam异常,不能一下子发生。