にNPEの原因となっている私はそれに呼ばれる一連のメソッドを持つオブジェクトは好きいますの検索方法は、Eclipse
objectName.method1().method2().method3();
と私はそれらのいずれかの方法がNullPointerExceptionがの原因となっているかを知りたいですスローされる。 Eclipseデバッガでこれを行う方法はありますか?
にNPEの原因となっている私はそれに呼ばれる一連のメソッドを持つオブジェクトは好きいますの検索方法は、Eclipse
objectName.method1().method2().method3();
と私はそれらのいずれかの方法がNullPointerExceptionがの原因となっているかを知りたいですスローされる。 Eclipseデバッガでこれを行う方法はありますか?
あなたが特定の値が予期せずnull
(例えばobjectName
またはmethod1()
またはmethod2()
からの戻り値)であったかを知りたい場合は、私は複数行にこのロジックを分割お勧めします。次に、デバッガで特定のブレークポイントを設定し、失敗したコード行に移動します。
これは実稼働環境でも有効です。実際の顧客環境に展開した後に問題が発生した場合、問題のあるコード行を指し示すより具体的な行番号がスタックトレースに表示されます。
これは、Eclipseデバッガでいくつかの慎重なステップで行うことができます。説明している行にブレークポイントを設定します。バイトコードで使用できるローカル変数がある場合は、objectName
の値を調べることで、最初の呼び出しで問題が発生することをすぐに知ることができます。 nullの場合は、最初の呼び出しであることがわかります。
そうでない場合は、方法(F5)に進みます。これは、最初のメソッドの実装にあなたをもたらします。それから、ステップアウト(ステップリターン:F7)することですぐにそれから戻ることができます。あなたは、次の方法を実行する準備ができているデバッガを使用して、信号線に戻る必要があります。もう一度踏み込んで(F5)続けます。それで、次のメソッドの実装に進むはずです。あなたがそこに到着しても、それでも例外はありません。再度(F7)に戻ります。
ステップインしたいメソッドではなく、例外ハンドラに到達するまで続行します。これは、あなたが後にしたもの、またはおそらく前のものです。なぜなら、それはnullを返したからです。
「Run to line」機能(デフォルトのCtrl + R)を使って再生することもできます。
method1()によって返される内容についてmethod2()が呼び出されています。これはmethod3()でも同じです。これらが本当にうまくテストされ、idk自体のようなクラスが使われていない限り、私は答えのアドバイスに従います。 3種類のオブジェクトと3種類のメソッドがあります。スタックトレースの混乱 – efekctive
それぞれの '.'と' ['は、NULLポインタ例外の潜在的な原因です。あなたが持っている状況を避けるために、これらのうちの1つを1つの行に入れてください。 –
私はスタックトレースを読むことは非常に難しいだろうと想像することはできません。 – ChiefTwoPencils