例外ラッピングを使用することができ、必要に応じて後でキャッチすることができます。 しかし、私が実装したいのは(そしてエレガントに)格納されたprocが呼び出された後にエラーの種類を区別することです。エラー処理の柔軟性
私はp_error
フィールドに格納されており、procがエラーをダンプします。検証エラー(DBに対する検証を避けることはできません)、または認可エラー(2つの場所、そのうちの1つはDBです)、またはSQLエラーである可能性があります。
要するに、例外をスローする前にエラーの種類を区別するための、きれいで洗練された仕組みが必要です。私が考え
二つのアプローチ:承認のための1、その他のエラーのSQLエラーの1と1:データベースレベルで
は3つのエラーフィールドを持っています。これは毛深くなるかもしれない。
エラーメッセージが格納され、後でそれを比較できるエラー構造体(enum?)を作成します。もう一度、あまりにも言葉。 db内のエラーメッセージが変わってもメンテナンスが難しい場合はどうすればいいですか?
他のアイデアをお持ちですか?
ありがとうございました。私はもっと明確にするつもりです。エラーには2つのタイプがあります:アプリケーションレベルでトラップされ、データベース内にトラップされます。 OracleExceptionを使用していません。実際に私はOracleを扱うラッパー・クラスを使用することを義務付けられていますが、それは自分自身の例外をスローします。 – sarsnake
しかし、あなたの考えは基本的にエラーコードを使ってエラーの種類を区別することです。質問:これらのカスタムコードはありますか? – sarsnake
データベースI(および他の多くのもの)内のエラーをキャッチすることは、非常に悪い形式とみなされます。私はあなたがSPの中にロールバックしたと仮定しますか?それは呼び出し側アプリケーションの責任でなければなりません。これを行うには、私はいつも例外を再スローします。 –