NpgsqlでExceptionのエラーコードを判断する

エラーコードを取得する

try {
    // hogehoge
} catch(PostgresException ex) {
    // 以下でエラーコードを取得する
    Console.WriteLine(ex.sqlState);
}

エラーコードをハンドリングする

以下のように記載すると、エラーコードによって処理を分岐させることができるが…

try {
    // hogehoge
} catch(PostgresException ex) {
    // エラーコードのハンドリング
    if (ex.sqlState == "23514") {
        // fugafuga
    }
}

PostgresErrorCodesにエラーコードがconstとして定義されているため、リテラルではなくPostgresErrorCodesを使用したほうが良さそう…

try {
    // hogehoge
} catch(PostgresException ex) {
    // エラーコードのハンドリング
    if (ex.sqlState == PostgresErrorCodes.CheckViolation) {
        // fugafuga
    }
}

PostgresErrorCodesの内容は、公式ドキュメントからどうぞ。

Appendix A. PostgreSQL Error Codes
AppendixA.PostgreSQL Error Codes All messages emitted by the PostgreSQL server are assigned five-character error codes t...

コメント

タイトルとURLをコピーしました