Javaでのエラー処理に関する質問があります。ライブラリにいくつかのエラーコードがあるとします。さまざまなエラーに対して、単一の例外を作成し、その側にエラーコードの列挙型を含めることをお勧めしますか?
更新:例外内にエラーコードを含めることは良い習慣ですか?
Javaでのエラー処理に関する質問があります。ライブラリにいくつかのエラーコードがあるとします。さまざまなエラーに対して、単一の例外を作成し、その側にエラーコードの列挙型を含めることをお勧めしますか?
更新:例外内にエラーコードを含めることは良い習慣ですか?
エラーとエラー コードは 2 つの別個のものです。1 つは何が起こったかを定義し、もう 1 つはエラーの特定の原因を識別します。
これの最も良い例は、DB 関連の例外です。SQL 例外には、その原因となったエラーのタイプを定義するコードが含まれています。
列挙型またはフィールドを介してそのコードにアクセスできるようにすることは、設計上の決定です。スローする例外が 1 つあり、それにエラー コードを追加すると、2 段階の例外処理と見なすことができます。
ソース (コード) を特定し、そのコンテキスト (例外) を把握したら、それに応じて行動できます。IMHO、階層は、必要に応じてコードで拡張できる優れたアプローチです。ソースを表すためだけに例外を 10 回サブクラス化すると、保守性と複雑さに影響があることに注意してください。
あまり。エラータイプごとに1つずつ、異なる例外タイプを使用する必要があります(妥当な制限内で、何百もの異なる例外タイプを作成しないでください!)。
各例外を処理して何が起こったかを検出する代わりに、本当にキャッチしたいものだけをキャッチできます。
ただし、同じタイプのいくつかの例外内のエラーの原因を明確にするために、例外メッセージを自由にカスタマイズしてください。
この簡単な説明は明らかです。
現在のプラクティスには、少なくとも 1 つの基本クラス (IOException) と、FileNotFoundException、UnsupportedEncodingException などの子クラスがあります。使用側では、IOException ですべてをキャッチできます。
これにより、FileNotFound だけに取り組むことができます。
一方、HTTP 応答コードのように多くのコードがある場合、例外を 1 つだけにするというアプローチは正当化されます。
エラー コードが多すぎて、ユーザーがキャッチして回復することを期待できない場合は、整数エラー コードを埋め込んだ 1 つの例外タイプを使用しても問題ありません。また、コンパイル時に一連のエラー コードを特定できない場合、選択の余地はありません。