情况是我想在数据库出现故障时处理异常。
我的假设是 DataAccessException 会被抛出。但是,当我关闭数据库时,我从存储库方法中获得的异常是CannotCreateTransactionException。这是对的吗。
我的应用程序是一个 Spring 命令行应用程序,下面是我如何访问它的代码
CustomerRepository cr = appContext.getBean(CustomerRepository.class);
cr.exists(customerId);
它按预期工作,但是当数据库关闭时,为什么它会抛出CannotCreateTransactionException。还是我对 DataAccessException 的理解是错误的。
DataAccessException什么时候来,CannotCreateTransactionException什么时候来?
如果你检查源代码,你会发现DataAccessException
及其子类,用于处理各种错误,当你访问表中的数据,而不是数据库。就像记录被其他交易锁定一样,会有某种DataAccessException
。
如果在访问数据库期间停止数据库,则错误可能与数据库驱动程序和基于此的数据源库有关。例如,您是否有连接池。
因此,我认为您无法指定在数据库关闭时将抛出哪个异常。