java异常与@Transactional

 

概述:java的异常分为Error 和 Exception 。这两类都是接口Throwable 的子类。

异常分类方式:
1.运行时异常 和 非运行时异常

2.可查的异常(checked exceptions)和 不可查的异常(unchecked exceptions)

总结 :

基本除IOException和SQLException外,其他都是运行时异常。
运行时异常属于unchecked exceptions,所以其他属于checked exceptions。可以理解为:运行时异常是无法预知的错误,所以为不可查异常(unchecked exceptions)。
@Transactional回滚

1.Error一定会回滚。
2.异常中:运行时异常(unchecked exceptions)一定会回滚。而非运行时异常(checked exceptions),如IOExceptions和SQLExceptions不会回滚。
让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)

让unchecked例外不回滚: @Transactional(noRollbackFor=RunTimeException.class)

注意: 如果异常被try-catch了,事务就不回滚了,必须抛向被@Transactional注解的层。
 

你可能感兴趣的:(java)