我认为我不了解未经检查的异常。

我正在使用spring / hibernate。

在事务中,我捕获了NullPointerException(因此未选中),但是到那时我的事务没有回滚。

是因为我在抛出NPE的相同方法中捕获了NPE吗?
这是我从代码的另一部分看到的唯一区别,即我抛出了一个IllegalArgumentException,该异常在抛出该异常的其他方法中被捕获(并以回滚结尾)。

谢谢,

最佳答案

如果未捕获的异常通过事务代理,Spring将回滚事务。

如果您在包装方法中捕获到异常,则事务将不会自动回滚。

如果确实由于某种原因需要捕获异常,则可以将其重新抛出,抛出另一个异常(考虑到方法的约定是有意义的),或者手动回滚事务。请记住,这最后一个选项破坏了春天的透明度。

10-08 08:26
查看更多