关于事务回滚问题

来源: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 群随时交流、讨论,也非常感谢同学的支持!

1
0

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2136 学习 · 927 问题

查看课程