java - 如何知道SQLException是由于数据库连接失败引起的

标签 java exception

在我的 java 应用程序中,由于数据库连接失败,日志文件中有大量 SQLException 跟踪。每 5 秒后尝试一次。所以我必须知道 SQLException 进入日志要么是由于数据库连接失败,要么是由于 sql 查询中发生了一些错误。这样,如果中间发生数据库连接失败并尝试记录三到四次以上,那么我可以将其限制为在1分钟后写入。记录方法如下


public static synchronized void log( Exception e, boolean forcePrint) 
     {

         if(sqlExceptionLogTime!=null && e instanceof SQLException &&((new Date()).getTime()-sqlExceptionLogTime.getTime())<60000){
        // do nothing    
         }else if ( (forcePrint || debugFlag) && (logStream != null)) 
         {
             e.printStackTrace(logStream);
             logStream.flush();
             logcount++;
             if(e instanceof SQLException){
                 sqlExceptionLogTime = new Date();
             }
        }

     }

在此sqlExceptionLogTime是一个静态日期类型变量

最佳答案

您可以使用错误代码并检查其是否存在失败情况,如下所示

Exception e;
int errorCode = e.getErrorCode();
if(errorCode==4005)
{
//do whatever you want to do for failed connection
}

关于java - 如何知道SQLException是由于数据库连接失败引起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606908/

相关文章:

java - 如何使您的桌面 Java 应用程序看起来像 Open Office 或 Eclipse 等?

java - Spring JPA : What is the cost of saveandflush vs save?

java - 使用 Hibernate 时出现 StringIndexOutOfBoundsException

c# - 抛出异常时添加对象数据

asp.net - Application_Error 在不同线程上触发

java - TextArea 溢出分配给它的边界以及 Borderlayout 的中心并覆盖整个窗口

java - 如何通过 Java 客户端和 Python 服务器通过套接字创建 IPC?

java - 服务器推送好还是客户端推送好?

java - 在Java中,我们抛出的异常不会被默认处理程序捕获?正确的

javascript - 由于未授权而尝试 appendChild 脚本元素失败时抛出什么错误