假设我有以下代码:
try {
//dao.querier behind the Scenes is using
//A Hibernate query with C3p0
List<?> newItems = dao.querier(true);
} catch (Exception e) {
e.printStackTrace();
} 其中,对方法dao.querier的调用使用C3p0和Hibernate。使用属性unreturnedConnectionTimeout进行配置:
unreturnedConnectionTimeout=300当我有一个没有返回到池的连接时,c3p0说-“java.lang.Exception:只调试:过期的资源签出堆栈跟踪”。
是我的代码片段中的catch块捕获的异常。通过调试我的应用程序,答案似乎是否定的。有什么办法能抓住这个例外吗?
发布于 2016-10-17 09:46:08
不,你不可能破例的。你所看到的“例外”从未被抛出。它由debugUnreturnedConnectionStackTraces生成,然后要求转储它的堆栈跟踪,以便向您显示泄漏连接的代码路径。
unreturnedConnectionTimeout存在于已泄漏的close()连接(并帮助您修复泄漏)。这些连接应该不再可以在任何堆栈中访问或在任何try/catch块中访问。如果将unreturnedConnectionTimeout设置为太小的值,以便在应用程序仍在使用连接时由于设置而关闭连接,则当应用程序试图在连接关闭后处理它们时,将看到普通的异常。
https://stackoverflow.com/questions/40070379
复制相似问题