Web ショップ用のエラー ロガーを実装していますが、特定のクラスで NullReferenceException をログに記録するだけでは、特定のレベルでしか役に立ちません。私はそれを知っているので、例外を防ぐ方法にはあまり興味がありませんが、それでもエラーロガーが発生することがあります。
問題は、すべての例外情報の中で System.NullReferenceException のソースを見つけるにはどうすればよいかということです。
Web ショップ用のエラー ロガーを実装していますが、特定のクラスで NullReferenceException をログに記録するだけでは、特定のレベルでしか役に立ちません。私はそれを知っているので、例外を防ぐ方法にはあまり興味がありませんが、それでもエラーロガーが発生することがあります。
問題は、すべての例外情報の中で System.NullReferenceException のソースを見つけるにはどうすればよいかということです。
完全なスタック トレースをログに記録してください。デバッグ情報が有効になっていると仮定すると (Web アプリで無効にする理由はありません...)、問題の原因となった行に到達できるはずです。
もちろん、必要な情報がすべて得られるとは限りません。
if (foo.Bar.Baz && person.Address.Road.Length)
1行で...しかし、それはあなたが得る最良の出発点です.
さらに、メソッドに引数の検証を追加すると、何が問題なのかを突き止めるのがずっと簡単になります。個人的には、このためのヘルパー メソッドのファンです。たとえば、野田時間には がPreconditions
あるので、次のように呼び出すことができます。
Preconditions.CheckNotNull(foo, "foo");
(これは の値も返しますfoo
。これは、引数をフィールドにコピーするコンストラクターで便利です)。
予期しない null 参照を早期に検出できれば、より良い結果が得られます。
質問を正しく理解している場合は、Visual Studioで[デバッグ]>[例外]に移動し、すべてのオプションをチェックして例外をスローします。これにより、デバッグ中にスローされているすべてのものを確認できます。InnerExceptionの内容を使用して、エラーの原因となっているルートの場所を特定できる可能性があります。