PostgreSQL JDBC错误代码枚举

Jef*_*f G 5 postgresql jdbc java-8 postgresql-9.5

是JDBC驱动程序随附的PostgreSQL错误代码的枚举,还是我们必须自己创建该枚举?在JDBC文档中找不到关于错误代码的任何信息。

开始编辑

为了澄清我在寻找什么,这是我现有的代码:

catch (final SQLException e) {
    if ("23514".equals(e.getSQLState())) {
        // check_violation
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得大多数程序员都会在那条线上引起人们的注意,因为它既不能自我记录也不能重复使用。每次开发人员需要确定异常原因时,都会被迫在线查找错误代码,并将魔术数字硬编码为条件代码。相反,我更喜欢编写如下代码:

catch (final SQLException e) {
    if (PGErrors.check_violation.equals(e.getSQLState())) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这样的枚举PostgreSQL错误代码的类是否已经存在?

Rad*_*icz 5

这样的枚举PostgreSQL错误代码的类是否已经存在?

是的,它可以:org.postgresql.util.PSQLState

但是,在您引用的页面上列出了238个错误代码,并且org.postgresql.util.PSQLState仅枚举41个值。在这41个值中,只有33个来自该PostgreSQL错误代码列表(大约14%的覆盖率)。

如果需要任何其他常量,则必须自己枚举这些常量。

  • 我创建了一个[带有所有Postgres 10.0错误代码的Java枚举](https://github.com/ayedo/PSQLStateEnum)。也许这可以节省一些时间。 (2认同)