问答详情
源自:3-1 使用Spring声明式事务理论

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

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

提问者:慕粉1462372119 2018-01-15 17:02

个回答

  • 韩同學
    2019-01-21 11:15:36
    已采纳


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


  • bigtree41642
    2018-05-04 16:36:58

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

  • 易水人去
    2018-01-16 14:38:29

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