Springboot中@Transactional注解与异常处理机制

@Transactional注解的方法默认会捕获所有非检查异常,即RuntimeException和Error,可以通过括号声明显示指定处理异常类,如Exception.class

关于异常处理机制:

当代码抛出异常时,异常处理的优先级如下:

  1. try-catch 块:如果在代码中使用了 try-catch 块来捕获异常,异常将会首先被 try-catch 块捕获并处理。只有在 try-catch 块中未处理(重新抛出)异常时,异常才会继续传播。
  2. @Transactional:如果异常从 try-catch 块中传播出来,Spring 的事务管理器(由 @Transactional 注解管理)会捕获异常并决定是否回滚事务。事务处理之后,异常继续传播。
  3. @ExceptionHandler:最后,异常会被全局异常处理器(由 @ControllerAdvice@ExceptionHandler 注解管理)捕获并处理。

因此,对于手动捕获的异常,需要手动将其抛出才会被@Transactional处理器捕获,全局处理器的优先级最后,除了特殊的异常可能需要调整传播顺序,大部分不需要考虑其影响。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值