Java 捕获(异常)块未命中

Java 捕获(异常)块未命中,java,exception-handling,Java,Exception Handling,也有一些类似的问题,但对于C#来说,大多是这样 基本上,我希望在最后一个catch块中捕获一个MySQLTimeoutException并将其转换为NotAuthorizedException(同时关注TigaseDBException和UnsupportedOperationException之外的任何其他内容)。不知何故,java逃避了我的总体规划 日志显示一条直线 com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement canc

也有一些类似的问题,但对于C#来说,大多是这样

基本上,我希望在最后一个catch块中捕获一个MySQLTimeoutException并将其转换为NotAuthorizedException(同时关注TigaseDBException和UnsupportedOperationException之外的任何其他内容)。不知何故,java逃避了我的总体规划

日志显示一条直线

com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1754)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
at tigase.db.jdbc.JDBCRepository.addDataList(JDBCRepository.java:183)
at tigase.db.jdbc.JDBCRepository.setDataList(JDBCRepository.java:1175)
at tigase.db.UserRepositoryMDImpl.setDataList(UserRepositoryMDImpl.java:651)
at tigase.xmpp.RepositoryAccess.setDataList(RepositoryAccess.java:1152)
at tigase.xmpp.RepositoryAccess.setOfflineDataList(RepositoryAccess.java:1204)
**at tigase.xmpp.impl.XGateRoster.setExtraItemsDone(XGateRoster.java:370)**
at tigase.xmpp.impl.DynamicRoster.setExtraItemsDone(DynamicRoster.java:377)
at tigase.xmpp.impl.JabberIqRoster.dynamicSetRequest(JabberIqRoster.java:178)
at tigase.xmpp.impl.JabberIqRoster.process(JabberIqRoster.java:329)
at tigase.server.xmppsession.SessionManager$ProcessorWorkerThread.process(SessionManager.java:2135)
at tigase.util.WorkerThread.run(WorkerThread.java:132)
据我所知,堆栈跟踪中的粗体行应该已将异常更改为NotAuthorizedException。我错过了什么


谢谢,我同意。问题不在于发布的代码。检查你的假设。XGateRoster.setExtraItemsOne是否还有其他重载?尝试使用Jad来反编译您正在运行的类文件。如果启用显示行号的选项,则可以确保正在查看的(反编译)源代码正是正在执行的代码。您知道您正在查看的日志消息的确切来源吗?可能它来自堆栈的更高层,在抛出之后,但在命中此捕获块和异常转换代码之前。

我看不出代码有问题,但看不到提供的堆栈跟踪会发生。尝试使用调试器以确保输入了正确的catch块,或者在代码中添加一些打印以查看发生了什么。发布整个stacktrace。我认为stacktrace中缺少一个根本原因。不,不缺少任何内容,并且不能使用任何调试器/打印,因为错误不会发生,或者由于打印太多而发生。我很确定我导出的是正确的。jar。。。hmmYou应该知道生成上述日志输出的确切行。请包括在内。一种可能的解释是,一个较高的堆栈帧捕获、记录并吞并了异常。因此,在处理异常时没有冒泡到catch子句。
com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1754)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
at tigase.db.jdbc.JDBCRepository.addDataList(JDBCRepository.java:183)
at tigase.db.jdbc.JDBCRepository.setDataList(JDBCRepository.java:1175)
at tigase.db.UserRepositoryMDImpl.setDataList(UserRepositoryMDImpl.java:651)
at tigase.xmpp.RepositoryAccess.setDataList(RepositoryAccess.java:1152)
at tigase.xmpp.RepositoryAccess.setOfflineDataList(RepositoryAccess.java:1204)
**at tigase.xmpp.impl.XGateRoster.setExtraItemsDone(XGateRoster.java:370)**
at tigase.xmpp.impl.DynamicRoster.setExtraItemsDone(DynamicRoster.java:377)
at tigase.xmpp.impl.JabberIqRoster.dynamicSetRequest(JabberIqRoster.java:178)
at tigase.xmpp.impl.JabberIqRoster.process(JabberIqRoster.java:329)
at tigase.server.xmppsession.SessionManager$ProcessorWorkerThread.process(SessionManager.java:2135)
at tigase.util.WorkerThread.run(WorkerThread.java:132)