私はこの質問について、例外が発生した場所にできるだけ近いところで例外を処理する方法についてのアドバイスを読んでいます。
ベストプラクティスのジレンマは、try / catch / finallyを使用してenum (または値を表すint、エラーの場合は0、OKの場合は1、警告の場合は2など)を返す必要があるかどうかです。答えは常に正しいですか、それとも呼び出し側がそれを処理するように例外を通過させるべきですか?
私が集めることができるものから、場合によってはこれが異なるかもしれないので、元のアドバイスは奇妙に思えます。
たとえば、Webサービスでは、常に状態を返す必要があるため、例外はその場で処理する必要がありますが、http経由でデータを投稿/取得する関数内で、例外(たとえば404の場合)は、それを起動したものにパススルーするだけです。そうでない場合は、結果の品質(エラー:404)と結果自体を呼び出し側に通知する方法を作成する必要があります。
データを取得/ポストするヘルパー関数内で404例外をキャッチすることは可能ですが、そうする必要がありますか?smallintを使用してプログラムの状態を示し(もちろん、それらを適切に文書化し)、この情報を外部の健全性検証の目的(すべてok /エラー処理)に使用するのは私だけですか?
更新:メインの分類で致命的または致命的でない例外を予期していましたが、回答を害しないようにこれを含めたくありませんでした。質問が何であるかを明確にしましょう:例外をスローするのではなく、スローされる例外を処理します。望ましい結果とは:エラーを検出し、エラーからの回復を試みます。復旧できない場合は、最も意味のあるフィードバックを提供してください。
ここでも、http get / postの例での問題は、元の呼び出し元に何が起こったかを説明する新しいオブジェクトを提供する必要があるかということです。このヘルパーが使用しているライブラリにあった場合、操作のステータスコードを提供することを期待しますか、それともtry-catchブロックに含めますか?設計している場合、ステータスコードを提供するか、例外をスローして、代わりに上位レベルにステータスコード/メッセージに変換させますか?
あらすじ:例外を生成するのではなく、コードの一部がステータスコードと、コードが生成する結果を返す場合、どのように選択しましたか?