我认为我不理解未经检查的异常。
我正在使用spring / hibernate。
在一个事务中,我正在捕获NullPointerException(因此未经检查),但最后我的事务没有回滚。
是不是因为我在投掷NPE的同一方法中捕获了NPE? 这是我从代码的另一部分看到的唯一不同之处,我抛出一个IllegalArgumentException,它从另一个抛出它的方法中捕获(并以回滚结束。)
谢谢,
答案 0 :(得分:2)
如果未捕获的异常通过事务代理,Spring将回滚事务。
如果在包装方法中捕获异常,则不会自动回滚事务。
如果由于某种原因确实需要捕获异常,则可以重新抛出异常,抛出另一个(考虑方法的合同有意义)或手动回滚事务。请记住,最后一个选项打破了春天的透明度。