我在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?
答案 0 :(得分:0)
不可能回滚已经回滚的东西,它根本就没有操作。取决于特定的API,在现代Java框架/应用程序服务器中,最好只在事务上设置setRollbackOnly()标志并将其留给应用程序服务器。
无论如何,在这种情况下实际上只能执行一次回滚。如果出现Boom异常或将发生Baam异常,它们不会立即发生。