1. ホーム
  2. Java

メソッド起動時にInvocationExceptionが発生した

2022-02-26 08:57:11

Java プログラムをデバッグ中に、ブレークポイントにあるオブジェクトの値を見ると、上記のエラーが発生しました。 に示すように、呼び出しの際に呼び出し例外が発生したことを示しています。


オブジェクトがArrayListオブジェクトだったとき、何かおかしいと思い始め、以下のようにリストの中身を見てみました。


ヌルポインター例外が表示されるなんて信じられないのですが、このヌルポインター例外は、詳細を整形したときに発生するエラーで、デバッグ時に現在の配列の値が表示されないため、ヌルポインター例外が表示されるのです。 それからstackflowに行って神様の回答を読んだら、みんなtoString()の問題だと言うので、該当のクラスに行ってみたら、本当にtoString()メソッドをオーバーライドしていて、デバッグが値を表示しているときにtoString()メソッドを呼ぶと問題が発生していましたが、プログラムの実行には影響がなく、デバッグをするだけでした。

<スパン 回避策 toString() メソッドがオーバーライドされているか、またそのオーバーライドが妥当かどうかを確認し の仕様になります。

参考リンク: https://stackoverflow.com/questions/4123628/com-sun-jdi-invocationexception-occurred-invoking-method

また、hashCode()メソッドのオーバーライドもこのエラーを引き起こすという話も載っていますが、私はまだ遭遇したことがありません。デバッグからすると、toString()メソッドを呼んでいるはずなのですが、hashCode()メソッドが影響しているので、なぜなのかわかりません。