Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 识别由于网络问题导致的SQLException_Java_Sql_Hibernate_Spring_Sqlexception - Fatal编程技术网

Java 识别由于网络问题导致的SQLException

Java 识别由于网络问题导致的SQLException,java,sql,hibernate,spring,sqlexception,Java,Sql,Hibernate,Spring,Sqlexception,我正在开发一个web应用程序,它使用3种不同的数据库(Oracle和MSSQL)。此应用程序包含spring和hibernate框架。在这个应用程序中,如果数据库关闭或出现一些网络问题,我必须以不同的方式处理(在尝试访问数据库时)。目前,如果出现上述情况,我将得到SQLException作为最小原因。如何确定引发SQLException的原因是网络问题或某些查询/数据问题 检查驱动程序的单独文档,查看由于您描述的错误而引发的错误代码 更新 } catch (SQLException se) {

我正在开发一个web应用程序,它使用3种不同的数据库(Oracle和MSSQL)。此应用程序包含spring和hibernate框架。在这个应用程序中,如果数据库关闭或出现一些网络问题,我必须以不同的方式处理(在尝试访问数据库时)。目前,如果出现上述情况,我将得到SQLException作为最小原因。如何确定引发SQLException的原因是网络问题或某些查询/数据问题

检查驱动程序的单独文档,查看由于您描述的错误而引发的错误代码

更新

} catch (SQLException se) {
   int count = 1;
   while (se != null) {
       System.out.println("SQLException " + count);
       System.out.println("Code: " + se.getErrorCode());
       System.out.println("SqlState: " + se.getSQLState());
       System.out.println("Error Message: " + se.getMessage());

       se = se.getNextException();
       count++;
   }
}

每个数据库供应商都提供自己的错误代码和状态,如果您检查它们,您应该是安全的。

我想您只需要从异常消息中提取这些信息。 例如,在Oracle的情况下,将引发一个SQLException异常,其中包含以下消息:

Io exception: The Network Adapter could not establish the connection
Io异常:网络适配器无法建立连接箱。有时我会收到一条错误消息,导致连接关闭。这依赖于信息可靠吗?不可靠。供应商可以更改行为。它可以非常可靠,直到你改变使用的驱动程序版本,但它更多的是一个黑客而不是一个坚实的解决方案。如果您需要从代码中检测出问题,而不只是告诉用户关于它,您应该考虑使用错误代码(尽管不同厂商的错误代码可能不同)。我只是不想显示信息。从代码中我应该知道真正的原因。我有点困惑,我必须检查哪个错误代码!!!我用谷歌搜索。没什么帮助:-)我在谷歌上搜索了这个:。你也应该看到。我认为是MySQL错误代码(因为我没有使用它,所以不太确定)。