HikariCP文档说:
connectionTimeout :此属性控制客户端等待来自池的连接的最大毫秒数。如果在没有连接可用的情况下超过此时间,则将抛出SQLException。
通过测试,我发现在这种情况下会抛出N
。
如果我的游泳池用尽了,我会得到这个例外。 如果我的数据库主机与网络断开连接,我会收到此异常。 如果我的数据库实例服务停止,我会收到此异常。
问题在于,无论什么原因,池都将始终使用相同的消息抛出此异常。
这样我无法告知用户发生了什么。如果游泳池真的用尽了(在重负荷下是正常的事情),应通知用户并要求稍后再试。
但如果我的数据库服务器出现故障,那就是另一个故事了,应该通知用户。
答案 0 :(得分:0)
检查yourException.getNextException()或yourException.getCause(),如果它不为null,通常意味着网络/数据库问题。
注意:Hikaricp不保留此例外。对于下次调用getConnection()失败,getNextException()/ getCause()可能为null。
在https://github.com/brettwooldridge/HikariCP/issues/719报道了这一点,好的事情是布雷特立即做了改变。