は、あなたがこのようなコードがあるとしましょう:デバッギングモードでチェーンメソッドを実行すると、NullReferenceExceptionの原因がわかりますか?
Human mario = HumanFactory.CreateRandomHuman();
Console.WriteLine(mario.GetFamily().GetFather().GetEyeColor());
そして、あなたがデバッグモードでこれを実行し、それはエラーメッセージ'Object reference not set to an instance of an object.'
で、System.NullReferenceException
を得るように、その行を示しています。しかし、あなたが実際にどの知らないとしましょうオブジェクトはnullです。
Visual Studioでどのオブジェクトが実際に参照例外を引き起こしたのかを知る方法はありますか?デバッガは、単に例外を発生させたとして、全体のラインを示しているが、mario
がnullの場合、あなたは知らない、またはGetFamily()
がnullを返した、またはGetFather()
は過去になど、
をnullを返した場合、私はちょうどそれが壊れてしまった場合個々の行に移動し、nullの例外が出るまでそれらのステップを進めますが、チェーンを分割することを伴わない簡単な方法が必要です。
実際には、VS 2017では、未処理の例外ポップアップが、どの呼び出しがnullを返したかを教えてくれます。それは便利です!私は2012年をチェックさせてください...いいえ、2012年はそれをしません。 –
「Mario」を選択し、右クリックして、クイックウォッチを選択します。クイックウォッチウィンドウで、 '.GetFamily()'を追加して再評価します。 nullが見つかるまで続けます。または、バグが見つかるまで一時的に書き換えます。 – Will