Bootstrap

java异常与@Transactional回滚

#java异常与@Transactional


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

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

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

总结 :

  1. 基本除IOExceptionSQLException外,其他都是运行时异常
  2. 运行时异常属于unchecked exceptions,所以其他属于checked exceptions。可以理解为:运行时异常无法预知的错误,所以为不可查异常(unchecked exceptions)。

@Transactional回滚

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

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

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


参考:

@Transactional(rollbackFor=Exception.class)的使用

Java异常之checked与unchecked

;