Transactions 具有两个连续回滚的效果

Transactions 具有两个连续回滚的效果,transactions,try-catch,Transactions,Try Catch,我在Java中有一个类a,它调用类b中的另一个方法b。被调用的方法b执行提交。然后在A中,我尝试了以下两种捕获方式: try { does a commit here } catch (boom) { does a rollback here } catch(baam) { does another rollback here } 我想知道的是,第二次回滚是否会取消第一次回滚?就像提交将var x更改为20一样,第一次回滚将var x更改为其原始值10,但第二次回

我在Java中有一个类a,它调用类b中的另一个方法b。被调用的方法b执行提交。然后在A中,我尝试了以下两种捕获方式:

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异常都将发生,但不能立即发生。

您的意思是,如果尝试不起作用,它将进入Boom或Baam。它不能同时输入两个捕获物?@tabby:是的,你只能输入其中一个。只执行第一个匹配的捕获。