场景是我想在DB关闭时处理异常。
我的假设是抛出DataAccessException。但是,当我将数据库降低时,我从存储库方法获得的异常是CannotCreateTransactionException。这是对的。
我的应用程序是Spring CommandLine应用程序,下面是我如何访问它的代码
CustomerRepository cr = appContext.getBean(CustomerRepository.class);
cr.exists(customerId);
它按预期工作但是当数据库关闭时,为什么它会抛出CannotCreateTransactionException。或者我对DataAccessException的理解是错误的。
DataAccessException何时到来以及CannotCreateTransactionException何时到来?
答案 0 :(得分:1)
如果检查源代码,您将看到{
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"Phase" : "Analysis",
"Task" : "Analysis",
"Comments" : "2",
"TaskType" : "DELIVERY",
"Items" : "CRI",
"UserName" : "Admin",
"IsBillable" : true,
"Date" : "29-05-2018",
"Hours" : 4.0
}
{
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"Phase" : "Analysis",
"Task" : "Analysis",
"Comments" : "8",
"TaskType" : "DELIVERY",
"Items" : "Others",
"UserName" : "Admin",
"IsBillable" : true,
"Date" : "28-05-2018",
"Hours" : 4.0
}
{
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"Phase" : "Analysis",
"Task" : "Analysis",
"Comments" : "4",
"TaskType" : "DELIVERY",
"Items" : "Others",
"UserName" : "Admin",
"IsBillable" : true,
"Date" : "28-05-2018",
"Hours" : 4.0
}
及其子类用于在访问表中的数据时处理所有类型的错误,而不是DB。就像记录被其他交易锁定一样,会有某种DataAccessException
。
如果在访问数据库期间停止数据库,则错误可能与数据库驱动程序和数据源库相关。例如,您是否有连接池。
所以,我认为你无法指定当数据库关闭时抛出哪个异常。