(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Eclipse】Index out of bounds for lengthがでた際の変数名特定

スポンサーリンク

やりたいこと

EclipseにてJavaプログラム実行時に以下のようなエラーが出た際の原因究明。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 963 out of bounds for length 961
	at ...

意味としては配列サイズが961なのに963に対してアクセスしていることによるエラーです。ただしエラーメッセージに配列名が記載されていません。

環境情報
  • Eclipse IDE for Java Developers 4.14

やり方

Debugでプログラムを実行し「Variable」を表示して上記の「out of bounds for length」で指定されている数値のサイズの変数を確認する。

f:id:mtiit:20200627001259p:plain
配列サイズを確認する

これによって問題となっている配列名が分かります。

以下、補足です。

補足

例えば以下のように配列の範囲が可変の場合は

String[] str2Ary = line.split(",", -1);

配列str2Aryの配列サイズはlineの中身によります。

そのような配列がプログラム上に溢れている際に表題のエラーが出た場合はどの配列に対して範囲外のアクセスをしているのか一目で分からない場合があります。

そういった時に使えるのがDebug時に画面に表示されるVariableのビューです。
このビューではNameとValueのペアを一覧で確認することができ、上の画像のように配列サイズが表示されるのでどの変数でエラーが起きているか分かりやすいです。

以上、ご参考になれば幸いです。