1

Web ショップ用のエラー ロガーを実装していますが、特定のクラスで NullReferenceException をログに記録するだけでは、特定のレベルでしか役に立ちません。私はそれを知っているので、例外を防ぐ方法にはあまり興味がありませんが、それでもエラーロガーが発生することがあります。

問題は、すべての例外情報の中で System.NullReferenceException のソースを見つけるにはどうすればよいかということです。

4

2 に答える 2

1

完全なスタック トレースをログに記録してください。デバッグ情報が有効になっていると仮定すると (Web アプリで無効にする理由はありません...)、問題の原因となった行に到達できるはずです。

もちろん、必要な情報がすべて得られるとは限りません。

if (foo.Bar.Baz && person.Address.Road.Length)

1行で...しかし、それはあなたが得る最良の出発点です.

さらに、メソッドに引数の検証を追加すると、何が問題なのかを突き止めるのがずっと簡単になります。個人的には、このためのヘルパー メソッドのファンです。たとえば、野田時間には がPreconditionsあるので、次のように呼び出すことができます。

Preconditions.CheckNotNull(foo, "foo");

(これは の値も返しますfoo。これは、引数をフィールドにコピーするコンストラクターで便利です)。

予期しない null 参照を早期に検出できれば、より良い結果が得られます。

于 2012-12-13T08:28:01.267 に答える
0

質問を正しく理解している場合は、Visual Studioで[デバッグ]>[例外]に移動し、すべてのオプションをチェックして例外をスローします。これにより、デバッグ中にスローされているすべてのものを確認できます。InnerExceptionの内容を使用して、エラーの原因となっているルートの場所を特定できる可能性があります。

于 2012-12-13T08:34:37.333 に答える