5
回答
Spring 的事务回滚默认是RuntimeException,为什么不直接指定Throwable呢?是基于什么考虑?
华为云实践训练营,热门技术免费实践!>>>   

RT:

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

举报
老西老西
发帖于8个月前 5回/561阅

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

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.
顶部