Java 如何在JDBC模板中捕获SqlInvalidAuthorizationSpecException?

Java 如何在JDBC模板中捕获SqlInvalidAuthorizationSpecException?,java,jdbc,exception-handling,db2,Java,Jdbc,Exception Handling,Db2,我的Spring Bacth应用程序中有以下代码: JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSouce); log.debug(getPropKey()+"Calling DB for records..."); List<DataLoadRecordClass> rows = null; try { rows = jdbcTemplate.query(queryS

我的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());
}
但是上面的尝试并没有抓住它。如何捕捉这些错误以便正确处理它们?现在,我甚至不能判断是否发生了错误,不管是什么错误或什么时候发生的


我看过很多像这样的堆栈溢出帖子,但它们似乎都说catch“DataAccessException”,我已经尝试过了,但它没有起作用,但是catch Exception应该可以捕获任何/所有的东西,对吗

try-catch仅仅包装了一个查询。该错误表示连接池初始化失败,可能是因为数据源配置错误。此初始化发生在您问题中的try-catch之外(之前)。

抱歉,代码正在捕获错误,只是JDBC在到达我的错误处理程序之前正在转储堆栈跟踪,日志文件中的所有噪音掩盖了我的消息。很烦人,但我可以解决它

您可以编写单独的catch块来捕获SqlInvalidAuthorizationSpecException,也可以打印StackTraceAlReady。您无法捕获SqlInvalidAuthorizationSpecException(编译器将阻止您),如果可以,捕获异常将捕获它。查看一下这一点没有帮助。我有意测试坏用户/通过的情况。我期待着出现错误。实际上,根据堆栈跟踪,异常发生在我的类的第304行,也就是上面try/catch中的那一行。也许你可以分享更多的代码?到目前为止,我在您提供的内容中没有看到任何行号。捕获它的不是JDBC,而是您的连接池(HikariCP),它在尝试向池中添加连接时会执行此操作。
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