Spring 的事务回滚默认是RuntimeException,为什么不直接指定Throwable呢?是基于什么考虑?

老西老西 发布于 2017/03/27 18:33
阅读 1K+
收藏 0

RT:

Spring 的事务回滚默认是RuntimeException,为什么不直接指定Throwable呢?是基于什么考虑?

加载中
1
DeMoNHaDeS
DeMoNHaDeS

可能spring的设计认为,默认非RuntimeException类型的异常,应交由程序猿处理而不是默认处理。

0
iBoxDB
iBoxDB

不了解你说的这个设计,但事务理论有一派认为如果事务中调用了如打印机外设这种不可回退的设备,事务中异常也要执行提交。个人认为这种情况就根本不应该放事务中,应该单独执行。Spring可能封装太密了,不利于单独执行。

0
MnameHZJ
MnameHZJ
程序异常一般是Exception类的子类。可能是这个考虑吧。
0
純白陰影
純白陰影
受检查异常应该到异常边界前处理掉,否则就是默认允许异常返回
0
西升初阳
西升初阳

Throwable分为Errror和Exception,而Exception又分为来两类,RuntimeException和非RuntimeException,非RuntimeException你在写代码时已经处理了,RuntimeException只有在运行时才可能会抛出来。所以spring认为的是处理Exception而不是Error。

* An {@code Error} is a subclass of {@code Throwable}
* that indicates serious problems that a reasonable application
* should not try to catch. Most such errors are abnormal conditions.
* The {@code ThreadDeath} error, though a "normal" condition,
* is also a subclass of {@code Error} because most applications
* should not try to catch it.
返回顶部
顶部