私は大規模な多層のJavaアプリケーションでエラー処理のハンドル(har-har)を取得しようとしている緑色の開発者です。いくつかの層を介して例外を連鎖させることは良いアイデアだと私は信じている多くの状況があります。例えば最下層で、いくつかの外部サービスに呼び出すの失敗は、ビュー内のすべての方法まで問題を起こした場合:チェーンされた例外をログに記録するのはいつですか?
- コンテンツXが要求されますが、ユーザーはによって引き起こさ
- 認可されていません:許可のリストをユーザーがnullによって引き起こさ
- :ユーザー管理Webサービスは、不正要求 - パラメータfooは 'XYZ'
- 認可されていません:許可のリストをユーザーがnullによって引き起こさ
私が本当に調べたいスタックトレースを持つ最も重要な例外は、チェーンの最後のものです。私は悪い要求をしたので、私はfooのフォーマットを修正する必要があります。しかし、私はこの例外をレイヤーにバブルアップさせると、各レイヤーに意味のある例外に連鎖してしまいます...最終的にキャッチしてログに記録するとき、デフォルトのログの振る舞いは常に最外の例外おそらく根本原因のスタックトレースの5行。
これにより、例外が発生したときにログに記録して、それをバブルアップさせたいが、その後ほとんどのものを2回ログに記録する。彼らが起こったとき、そして彼らが最終的に捕らえられるとき。
ここでベストプラクティスは何ですか?
これには多くの意見がありますが、「真実」はありません。最も外側の層とそれにログオンする) – Friso