service里面加了事务后,运行期异常和编译期异常和exception的使用

public int dogetUserIdAndFindUserTokenTimeout(String userToken) throws Exception{
        //通过userToken 获取userId ,并且 检查 令牌是否过时了,这样就不用经过拦截器了,app 方便,我的架构也更加的好,也更加的灵活
        Example example = new Example(IosTokenClient.class);
        Example.Criteria select = example.createCriteria();
        select.andEqualTo("token", userToken);

        List<IosTokenClient> userTokens = iosTokenClientMapper.selectByExample(example);

        if (userTokens.size() == 0) {
            // 不存在该UUID
            throw new LyecSystemException("2");// 令牌失效
            
        } else {

            Date addTime = userTokens.get(0).getAddTime();
            Date nowTime = new Date();
            // 判断时间是否相差过15天,超过15天无效
            if (((nowTime.getTime() - addTime.getTime()) / (24 * 60 * 60 * 1000)) > 15) {
                // 同时需要删除该 过时的token

                iosTokenClientMapper.deleteByPrimaryKey(userTokens.get(0).getId());

                throw new Exception("2");// 这样也是不会回滚的,因为 exception
                // 比runtimeException大

            } else {

                return userTokens.get(0).getUserId();

            }

        }

 

因为回滚的最大的异常只是 runtimeException,它就是运行期异常,如果 抛得是 exception译异常,它比runtimeException还大,事务不把它当做 运行期异常了,可以把它作为编译期异常了,所以事务不会回滚的啦。 如果代码在执行的过程抛出了其他异常 那么一般也就是 运行期异常了,事务还是会回滚的啦。 除非你 try catch捕获了,没有手动抛出异常,那么也是不会回滚的,算编译期异常了的

转载于:https://my.oschina.net/ouminzy/blog/717775

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值