关于事务回滚问题
来源:16-8 Spring 事务对主动捕获异常和checked异常的处理

judyW
2019-08-17
问题一:加入@transaction的方法,如果程序中出现了npe,手动try catch掉,然后在catch块中转化成自定义的异常抛出,自定义异常继承自runtime异常,会不会出现回滚呢?猜想:会回滚
问题二:加入@transaction的方法,如果注解属性中设置rollbackfor=exception.class,如果程序中出现checked异常,是不是也会回滚?猜想:会回滚。
问题三:加入@transaction的方法,如果程序中抛出了npe,手动try catch ,catch块中只是打印了异常堆栈信息,并不抛出,这时候又想让他回滚,可以使用课上讲的强制抛出方法。有一点不明白,什么场景下用这种呢?我考虑的是既然出现了异常,但是还让他回滚,只是打印了异常信息,那么用户或者开发人员对异常岂不是毫无感知,难道通过报警程序去获取异常信息嘛,请一哥指教!谢谢
写回答
1回答
-
张勤一
2019-08-19
同学你好:
前两个问题的描述都是正确的。
第三个问题,提到了日志,日志是当发生了错误之后 debug 错误的一种方法,通过日志确认发生异常的地方。但是,通常直接抛出异常就可以,因为异常栈和异常信息也会打印。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
10