0

これは一部の専門家にとってばかげているように聞こえるかもしれません..しかし、これを理解しようとしています!

MVC アプリケーションに ELMAH を実装しようとしていますが、ここで以前に正確に尋ねられた質問を突然考えています。try/catch の代わりに Elmah を使用しても大丈夫ですか?

しかし、別の質問があります..なぜですか?

Try catch を使用しないと、elmah が例外をログに記録し、ユーザーにエラー ページが表示されます。では、なぜ Try/Catch が必要なのですか?

try/catch/finally を考える 1 つのシナリオで SQLTransations を含むアプリケーション。他の状況ではスキップして ELMAH のみを使用できますか

正しい方法とは正確には何ですか?これについて明確になることを願っています:)ありがとう

4

1 に答える 1

2

try/catch がないと、例外が発生するとすぐにコードの実行が停止するためです。これは、次のようなさまざまな理由で問題になる可能性があります。

  • オブジェクトを処分する必要がある
  • データベース トランザクションのロールバック/コミット

もっとありますが、これはあなたに良いアイデアを与えます。Try/Catch を使用すると、例外をトラップし、それを処理するかどうかを選択して、プログラムをクラッシュさせることなく次の作業に進むことができます。また、NullReferenceException が原因で自分のコードが死んでしまうことを本当に望んでいるのは誰でしょうか? さらに良いのは、NetworkTimeout の問題、時期尚早の HttpConnection の終了など、制御できないエラーの場合です。適切な場所でエラーを処理することをお勧めします。これは、コード ブロック全体を try/catch でラップするという意味ではありません!!

例外をキャッチして処理している場合でも ELMAH にログを記録したい場合は、次のようにすることができます。

try {
  ...
}
catch (Exception e) {
  Elmah.ErrorSignal.FromCurrentContext().Raise(e)
}
于 2013-04-25T16:32:23.637 に答える