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

try-catch怎样写可以让spring认为抛出的异常是运行时异常,从而执行事务操作??

本节视频老师说,不适当使用try-catch会造成spring以为不是运行时异常,从而不执行事务操作,那如何写try-catch,可以保证spring以为抛出的异常是运行时异常,从而执行回滚??

正在回答

3 回答


SeckillExecution 继承RuntimeException。seckillCloseException ,RepeatKillException 继承SeckillExecution
这样保证所有出现的异常都被视为 运行期异常
            catch (SeckillCloseException e1){
            throw  e1;
        } catch (RepeatKillException e2){
            throw e2;
        } catch (Exception e){  // 其它异常
            logger.error(e.getMessage(),e);
            // 所有编译期异常转化为运行期异常
            throw new SeckillException("seckill inner exception"+e.getMessage());
            return  new SeckillExecution(seckillId,SecKillStateEnum.INNER_ERROR);
        }


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

意思是有了异常你要继续往上抛。不能自已默默catch处

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

看最终service方法最终是否抛出了运行时异常吧,如果在方法中抛出了运行时异常又catch了的话,spring就检测不到,不会回滚

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

举报

0/150
提交
取消

try-catch怎样写可以让spring认为抛出的异常是运行时异常,从而执行事务操作??

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