后端岗位面试题更新 2026-08-05

在 @Transactional 注解修饰的方法中,如果异常被 catch 捕获后没有抛出,事务为什么会失效?请说明原因和正确的处理方式。

淘宝闪购后端开发消费品/零售风险判断技术原理问题排查Spring Framework

考察说明

考察对 Spring 声明式事务回滚机制的理解,尤其是异常处理对事务边界的影响

回答思路

  1. 准确指出事务回滚的触发条件基于运行时异常向外抛出
  2. 说明方法内 catch 吞掉异常会导致事务拦截器无法感知异常
  3. 给出正确做法:要么不捕获并通过 propagation 或 rollbackFor 控制,要么手动调用 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()
  4. 能结合代理机制说明事务由 AOP 代理生效,异常必须穿透代理边界
本题已收录答题指导

本题附完整参考答案与评分标准

登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。