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);ios

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

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

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

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

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

            } else {it

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

            }编译

        }class

 

由于回滚的最大的异常只是 runtimeException,它就是运行期异常,若是 抛得是 exception译异常,它比runtimeException还大,事务不把它当作 运行期异常了,能够把它做为编译期异常了,因此事务不会回滚的啦。 若是代码在执行的过程抛出了其余异常 那么通常也就是 运行期异常了,事务仍是会回滚的啦。 除非你 try catch捕获了,没有手动抛出异常,那么也是不会回滚的,算编译期异常了的

相关文章
相关标签/搜索