请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师你好,我觉得你的4-5节的关于只有runtimeexception才能回滚的测试有点问题

.我在IDEA中是没法实现的,会报错..您的测试是这样的,抛出exception,然后发现没有导致回滚.其实,您的代码是捕获了exception的,您在catch块里又抛出了exception,我觉得这里是不是就把这个异常吞掉了,而没有抛出呢?才导致没有回滚.我在IDEA中敲这个代码,发现会报错,//img1.sycdn.imooc.com//szimg/5a3c60b10001854c07690129.jpg

shopOperationException是继承自exception的

正在回答 回答被采纳积分+3

1回答

翔仔 2017-12-22 10:50:31

同学好,非常抱歉这两周要回老家办事,只能通过手机回复。现在查不到资料翔仔也不太确定。同学可以帮忙测试一下,然后告诉下翔仔结果:) 即可以这样,在@Transactional标签的方法里 先往数据库插入信息 判断如果插入成功 在成功的if里加入1/0,这个会抛runtimeexception。然后看看会不会回滚,即方法执行成功后显示插入成功但是数据并没有真正插入到数据库里。
之后再注释掉1/0 然后改成new file(输入一个不存在的文件路径),这样会抛非runtime exception 然后再做同样的验证。辛苦同学啦,这方面当时由于要讲的知识点太多确实没有做太深入了解,希望同学能理解,赞同学的深入挖掘能力

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_泪梦红尘_3 #1
    经过测试,我发现,非RuntimeException也能导致回滚,我刚才产生了一个NullPointException,事务成功回滚,数据库中并没有插入数据.但是语句已经生成并执行成功.还有就是,查阅资料,发现@Transactional可以指定对哪些异常进行回滚操作,它有rollbackfor属性.
    回复 有任何疑惑可以回复我~ 2017-12-22 11:20:52
  • 翔仔 #2
    nullpointer是runtimeexception呢 非runtime的是filenotfoundexception 所以才叫同学试这个
    回复 有任何疑惑可以回复我~ 2017-12-22 11:30:51
  • 提问者 qq_泪梦红尘_3 回复 翔仔 #3
    哦,那我再试试……
    回复 有任何疑惑可以回复我~ 2017-12-22 11:34:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信