为了账号安全,请及时绑定邮箱和手机立即绑定

请问:最后的代码,异常都捕获了,为何会触发回滚?

请问:最后的代码,异常都捕获了,为何会触发回滚?

正在回答

3 回答

23:12:47.590 [main] DEBUG seckill.dao.SeckillDao.reduceNumber - ==>  Preparing: UPDATE seckill SET productnumber = productnumber - 1 WHERE seckill_id = ? AND start_time <= ? AND end_time >= ? AND productnumber > 0
23:12:47.594 [main] DEBUG seckill.dao.SeckillDao.reduceNumber - ==> Parameters: 1000(Long), 2016-08-06 23:12:47.585(Timestamp), 2016-08-06 23:12:47.585(Timestamp)
23:12:47.636 [main] DEBUG seckill.dao.SeckillDao.reduceNumber - <==    Updates: 1

日志中显示update: 1,这个对应update操作被回滚了,但是回滚没有日志输出,直接报出异常就没有日志了。显然回滚的日志不是被logback控制显示的。

0 回复 有任何疑惑可以回复我~

你好,谢谢回答,可是我就是触发的重复秒杀这个异常,被捕获了,但是那个update操作被回滚了哦。求解答

0 回复 有任何疑惑可以回复我~

最后的代码 只是 捕捉了 秒杀重复  和 秒杀关闭这两个异常,如果还有别的异常就抛出来,并且抛出的异常是已经被转化为 “运行时异常”  而 spring 是对  “运行时异常”敏感的(监控),这个时候就触发它的事物机制(前提是这个方法被事务管理)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问:最后的代码,异常都捕获了,为何会触发回滚?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信