ログから明確な全体像を得るために例外をスローするベスト プラクティスは何ですか?
ロギングには、NLog を使用しています。
以下は簡単なコードです。
catch (Exception ex)
{
logger.Fatal(ex.Message);
throw new Exception(ex.Message);
}
適切なログ メッセージが表示されません。関数、エラーコード行などの情報が必要です。
ログから明確な全体像を得るために例外をスローするベスト プラクティスは何ですか?
ロギングには、NLog を使用しています。
以下は簡単なコードです。
catch (Exception ex)
{
logger.Fatal(ex.Message);
throw new Exception(ex.Message);
}
適切なログ メッセージが表示されません。関数、エラーコード行などの情報が必要です。
ログインの目的で、例外オブジェクトのメッセージ フィールドだけでなく、さらに多くのことを分析します。
このリンクは、一般的な例外オブジェクトから取得できる情報を提供します
また、 と の間には違いがthrow ex
ありthrow
ます。さらに、新しく作成された例外をスローすると。
throw new Exception(ex.Message)
) では、例外の性質について何も言わず、このコード行から構築された新しいスタックトレースを持つ一般的な例外をスローしています。throw ex
- 元の例外を再スローしますが、スタックトレースを現在の catch 句にカットします
throw
- 元のスタックトレースを使用して元の例外を再スローし、その他の例外をログに記録してさらに先に進めることができます
したがって、達成しようとしていることに応じて、この 3 つのケースのいずれかがニーズを満たします。
例外スローのベスト プラクティスについて詳しくは、 http://msdn.microsoft.com/en-us/library/system.exception_properties.aspxを参照してください。