エラー文を理解して、すぐにプログラムを修正できるようになりたいという思いから勉強をはじめたエラー文の勉強シリーズです。(Java Programming Silverレベル)
今回はIndexOutOfBoundsExceptionです。以前学んだArrayIndexOutOfBoundsExceptionとの違いがいまいちよくわかっていないので調べていきたいと思います。
関連記事:ArrayIndexOutOfBoundsExceptionとは?超初心者のJavaの勉強
IndexOutOfBoundsExceptionとは
IndexOutOfBoundsExceptionはコレクションの無効なインデックスにアクセスした時に発生します。
コレクションにはSet, Listなどがあります。
コレクションについて詳しくは以下記事をご確認ください。
コレクションの無効なインデックスにアクセスした時とは
IndexOutOfBoundsExceptionを発生させてみます。
サンプルコード
List<String> list = new ArrayList<>();
list.add(“お寿司”);
System.out.println(list.get(1));
結果
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1
0番目のインデックスしか追加していないため1番目のインデックスを呼び出してエラーになっています。
サンプルコード
せっかくなのでもうひとつ例です。
List<String> list = new ArrayList<>();
list.get(0);
結果
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
上記の場合Listの中身が無い状態で0番目のインデックスを呼び出しているために(範囲外)エラーが発生しています。
おわり
エラーの中身がわかれば対応の仕方もわかるので怖く無くなってきますね。
参考
https://airbrake.io/blog/java-exception-handling/indexoutofboundsexception