IndexOutOfBoundsExceptionとは?初心者のJavaの勉強

エラー文を理解して、すぐにプログラムを修正できるようになりたいという思いから勉強をはじめたエラー文の勉強シリーズです。(Java Programming Silverレベル)

今回はIndexOutOfBoundsExceptionです。以前学んだArrayIndexOutOfBoundsExceptionとの違いがいまいちよくわかっていないので調べていきたいと思います。

IndexOutOfBoundsExceptionとは

IndexOutOfBoundsExceptionはコレクションの無効なインデックスにアクセスした時に発生します。
コレクションにはSet, Listなどがあります。

コレクションについて詳しくは以下を確認ください。

https://programmer-life.work/java/collection

コレクションの無効なインデックスにアクセスした時とは

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

Java

Posted by Nakamoto