弹簧投掷不能创建事务异常



情况是我想在数据库出现故障时处理异常。

我的假设是 DataAccessException 会被抛出。但是,当我关闭数据库时,我从存储库方法中获得的异常是CannotCreateTransactionException。这是对的吗。

我的应用程序是一个 Spring 命令行应用程序,下面是我如何访问它的代码

CustomerRepository cr = appContext.getBean(CustomerRepository.class);
cr.exists(customerId);

它按预期工作,但是当数据库关闭时,为什么它会抛出CannotCreateTransactionException。还是我对 DataAccessException 的理解是错误的。

DataAccessException什么时候来,CannotCreateTransactionException什么时候来?

如果你检查源代码,你会发现DataAccessException及其子类,用于处理各种错误,当你访问表中的数据,而不是数据库。就像记录被其他交易锁定一样,会有某种DataAccessException

如果在访问数据库期间停止数据库,则错误可能与数据库驱动程序和基于此的数据源库有关。例如,您是否有连接池。

因此,我认为您无法指定在数据库关闭时将抛出哪个异常。

最新更新