私はいつも自分のアプリケーションのどのレベルで自分が書いているのか疑問に思っていますtry-catch
か?
DAL?キャッシュ?BL?UIロジック?
ログに書き込んで再スローした場合
すべての関数でtry-catchを使用する必要がありますか?
どんな関数でも、私が思いもよらなかった例外が発生する可能性があります。
私はいつも自分のアプリケーションのどのレベルで自分が書いているのか疑問に思っていますtry-catch
か?
DAL?キャッシュ?BL?UIロジック?
ログに書き込んで再スローした場合
すべての関数でtry-catchを使用する必要がありますか?
どんな関数でも、私が思いもよらなかった例外が発生する可能性があります。
まあ、それは依存します。UI レイヤーでは、すべてのエラーを Application_Error でグローバルにキャッチし、それに応じて処理します。次に、UI にバブルアップして一般的なエラー ページにリダイレクトさせたくないエラーを try-catch します。これは、すべてではないにしてもほとんどのエラーを報告するのに効果的でした。
エラーの扱い方が異なる人もいます。ビジネス層でエラーをキャッチし、ログに記録して BLL から返すか、ログに記録して一般的なエラーを再スローします。たとえば、Enterprise Library Exception ブロックがどのようにエラーにアプローチするかを確認してください。
PostSharp のような AOP ライブラリを使用して、エラーを処理するすべてのオブジェクトにアタッチしたり、MVC の例外フィルタリングを使用してエラーを処理したりすることもできます。
個人的には、try-catch ブロックよりも try-finally を使用する傾向があります (一部の外部データ ソース呼び出しを除く)。
コードのエンドポイントに try-catch を保持し、エラー スタックをログに記録し、必要に応じてエラー メッセージを処理します。
throw;
ちなみに、例外を飲み込まないように、必ず呼び出してください。