5

Can Java's NullPointerException be changed to report on which variable was null? への 対応として thorbjorn-ravn-andersen さんのコメント:

いいえ、クラス ファイルのデバッグ情報には、これを許可するのに十分な情報が含まれていません。

私の質問は、なぜですか?

4

3 に答える 3

3

実際の例外は特定のバイトコード命令を指しますが、言語ステートメントは、参照される6つの異なるポインターを持つ数十の命令に拡張される場合があります。さらに、ポインターは、いくつかの命令の間、一時ストレージ(バイトコードスタック)に保持されている可能性があるため、特定の変数名との関連付けが失われる可能性があります。

派手なデバッガーは、「障害が発生した」変数を公正に推測できますが、一般的に言えば、失敗したステートメントを指摘するだけで十分です(ただし、失敗は、アクションが延期)。

于 2013-01-02T21:36:17.977 に答える
3

変数ではなかった可能性があります。たとえば、メソッド呼び出しの結果など、一時的な結果であった可能性があります。NPE が発生するまでには、それは単なる匿名スタック スロットです。

于 2013-01-02T21:42:59.300 に答える
0

コード内の行番号は、それをトレースするのに十分であるためです。

于 2013-01-02T21:46:36.903 に答える