【发布时间】:2017-12-22 09:41:46
【问题描述】:
我的 Spring Bacth 应用程序中有以下代码:
JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSouce);
log.debug(getPropKey()+"Calling DB for records...");
List<DataLoadRecordClass> rows = null;
try {
rows = jdbcTemplate.query(queryStringFormated, new DataRecordRowMapper());
} catch (Exception ex) {
log.error(getPropKey()+"FATAL: Database call failed wtih : " + ex.getMessage());
}
如果我输入错误的用户/密码,它会抛出
2017-07-17 13:38:31,945 31363 ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException: [jcc][t4][2013][11249][4.12.55] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000
但是上面的尝试没有捕捉到它。我怎样才能捕捉到这些错误,以便我可以正确处理它们?现在我什至不能告诉一个错误发生了,不管是什么错误或什么时候发生的。
我看过很多这样的 Stack Over Flow 帖子,但他们似乎都说 catch "DataAccessException" 我试过但没有奏效,但捕捉 Exception 应该可以捕捉到任何/一切,对吗?
【问题讨论】:
-
您应该编写单独的 catch 块来捕获 SqlInvalidAuthorizationSpecException 或者您可以 printStackTrace
-
已经试过了。你不能捕获 SqlInvalidAuthorizationSpecException(编译器会阻止你),如果你能捕获异常应该捕获它。
-
这没有帮助。我故意测试不良用户/通行证的情况。我期待错误。
标签: java jdbc exception-handling db2