Java 连接到Postgres DB失败时获取错误代码

Java 连接到Postgres DB失败时获取错误代码,java,postgresql,exception,Java,Postgresql,Exception,我想在PostGres DB出现任何问题时记录错误代码,例如:42703表示列名称错误,08006表示连接失败。我尝试了getSQLState(),它适用于前一种情况,但不适用于后一种情况。即使在将异常转换为SQLException并调用getSQLState()之前检查该异常的实例,我仍然会得到空值 我尝试过的两种情况是停止TaskManager中的Postgres服务和使用错误的用户名连接到DB。我的方法有什么问题吗 提前感谢。连接失败通常由数据库驱动程序捕获和处理,因此这些异常会在应用程序

我想在PostGres DB出现任何问题时记录错误代码,例如:42703表示列名称错误,08006表示连接失败。我尝试了
getSQLState()
,它适用于前一种情况,但不适用于后一种情况。即使在将异常转换为
SQLException
并调用
getSQLState()
之前检查该异常的实例,我仍然会得到空值

我尝试过的两种情况是停止TaskManager中的Postgres服务和使用错误的用户名连接到DB。我的方法有什么问题吗


提前感谢。

连接失败通常由数据库驱动程序捕获和处理,因此这些异常会在应用程序捕获之前被消耗掉。通常,为了测试数据库是否可用,我使用select查询并测试非空结果,例如
select 1

谢谢您的建议。我只是想知道他们是否为每种情况指定了准确的错误代码,这些代码必须在应用程序中的某个位置使用,而不仅仅是在驱动程序日志中。这些代码的定义是因为驱动程序使用相同的代码,并以与应用程序相同的方式捕获它们。这样想吧。。。如果应用程序的一个方法捕获到异常,则稍后调用的任何方法都不会看到该异常,因为它已被使用。数据库驱动程序也是Java方法,因此在应用程序有机会看到异常之前,它们会在其try块中捕获异常。因此,为了回答您的问题,它们在您的应用程序中的某个地方被驱动程序使用,驱动程序作为Java包从jar(Java存档)文件加载到您的代码中。明白了!谢谢:)