java - Spring JDBCTemplate 执行不抛出异常
问题描述
我有一个spring应用程序,它的一个功能是能够获取任何一段SQL并运行它,轮询器轮询文件夹中包含SQL文件位置的触发器文件,然后应用程序读取SQL文件并将内容放入“sqlquery”消息头中。
我们似乎遇到的问题是当 SQL 失败时没有抛出异常。
try
{
if ((msg.getHeaders().containsKey("sqlQuery"))&&(!"".equals(msg.getHeaders().get("sqlQuery"))))
{
_log.debug("Executing: " + msg.getHeaders().get("sqlQuery"), UID);
jdbcTemplate.execute((String) msg.getHeaders().get("sqlQuery"));
_log.info("Query executed successfully.", UID);
}
result = "S";
} catch (Exception ex) {
ex.printStackTrace();
_log.error(ex, ex, UID);
}
JDBC Drivers 是 Microsoft JDBC Driver 4.2,连接到 SQL Server 2014 数据库。
我尝试使用简单的“选择 1/0”来运行它,这显然会引发除以零错误,但我们得到了成功的响应。
2018-07-19 16:36:01,738|org.springframework.jdbc.datasource.DataSourceUtils|sqlFileChannelTaskExecutor-6|DEBUG|Returning JDBC Connection to DataSource
2018-07-19 16:36:01,738|org.springframework.integration.transformer.MessageTransformingHandler|sqlFileChannelTaskExecutor-6|DEBUG|org.springframework.integration.transformer.MessageTransformingHandler@c6d1b7 received message: GenericMessage [payload={UPDATED=1}, headers={UID=MCTest, errorChannel=logSqlErrorChannel, id=318f54b8-2889-22af-1009-e191550c75eb, sqlQuery=Select 1/0, timestamp=1532014561738}]
2018-07-19 16:36:01,738|org.springframework.beans.factory.support.DefaultListableBeanFactory|sqlFileChannelTaskExecutor-6|DEBUG|Returning cached instance of singleton bean 'integrationEvaluationContext'
2018-07-19 16:36:01,738|org.springframework.beans.factory.support.DefaultListableBeanFactory|sqlFileChannelTaskExecutor-6|DEBUG|Returning cached instance of singleton bean 'integrationConversionService'
2018-07-19 16:36:01,738|MCTest|sqlFileChannelTaskExecutor-6|DEBUG|SQL Step Started
2018-07-19 16:37:16,926|MCTest|sqlFileChannelTaskExecutor-6|DEBUG|Executing: Select 1/0
2018-07-19 16:37:22,530|org.springframework.jdbc.core.JdbcTemplate|sqlFileChannelTaskExecutor-6|DEBUG|Executing SQL statement [Select 1/0]
2018-07-19 16:37:28,278|org.springframework.jdbc.datasource.DataSourceUtils|sqlFileChannelTaskExecutor-6|DEBUG|Fetching JDBC Connection from DataSource
2018-07-19 16:37:28,278|org.springframework.jdbc.datasource.DriverManagerDataSource|sqlFileChannelTaskExecutor-6|DEBUG|Creating new JDBC DriverManager Connection to [jdbc:sqlserver://<Server>;databaseName=<Database]
2018-07-19 16:37:33,069|org.springframework.jdbc.datasource.DataSourceUtils|sqlFileChannelTaskExecutor-6|DEBUG|Returning JDBC Connection to DataSource
2018-07-19 16:37:33,069|MCTest|sqlFileChannelTaskExecutor-6|INFO |Query executed successfully.
谁能帮助解释为什么没有捕获/抛出异常?
解决方案
分享您的查询.. 并使用catch (ArithmeticException ae)
where 就好像您在理解 1/0 ArithmeticException时遇到问题。
希望它会奏效。