Spring · 单选题 · 第 52 题
Java 后端开发面试 · 第 52 题
@Transactional 不做任何配置时,方法抛出哪类异常会触发回滚?
- ARuntimeException 和 Error
- B所有 Exception,包括受检异常在内
- C只有 SQLException 及其子类
- D任何异常都不会触发回滚
答案
A A. RuntimeException 和 Error
解析
Spring 默认认为受检异常是业务上可预期的,不回滚。如果业务抛出受检异常也希望回滚,要写 @Transactional(rollbackFor = Exception.class)。还有一个常见坑:在方法里 catch 住异常却不再抛出,事务感知不到异常,也就不会回滚。