例外処理についての質問があります。 私はあなたにとってはかなり簡単かもしれないと思いますが、私にとっては、マルチティアプロジェクトで例外を処理する方法を知りません。マルチティアで例外を処理する最善の方法
私の解決策では、私はいくつかのプロジェクトがあるとしましょう。
DataAccess、BizComponent、WCF、Proxy、およびPresentation(上位)があります。
DataAccessで "catch catch"を試み、BizComponentとBizComponentに例外をスローしようとしましたが、もう一度 "try catch"を実行してエラーをログに記録し、再度例外をWCFにスローします。
WCFレイヤーとプロキシレイヤーでは、同じことをしています。プレゼンテーションレイヤーでは、エンドユーザーにカスタムメッセージを表示します。
私のシニアは、WCFと上位層で「キャッチしよう」だけを開始する必要があることを教えてくれました。 DataAccessとBizComponentで処理する必要はありません。 WCFにキャッチされるためです。
DataAccessで例外をキャッチしようとすると、BizComponentと 例外がスローされるか、WCFでしか捕捉しようとしないと、上位層にスローされますか?
どちらが優れていますか?
ご質問が不明な場合は、お知らせください。 これは私の最初の多層プロジェクトなので、混乱させてしまいます。 ありがとうございます。
私はDataAccessの "try catch"では何もしませんが、例外をキャッチして上位層に例外をスローします。私が上層に何も提供しないのであれば、必要ないのですか? – kevin
@kevinもしあなたがキャッチ内で何もしていなければ、目的を果たさないので省略してください。クリーンアップを実行する必要がある場合は、 'try catch'ではなく' try finally'を使用してください。 – detaylor
@kevin - 例外を元に戻す方法は分かりませんが(同じ例外を投げていると仮定します)、スタックを維持するために 'throw ex;'の代わりに 'throw; 'を使用する必要があります。初期例外がスローされました – detaylor