開発をしていて起きた例外とその解決・回避方法を記載します。
今回は「IndexOutOfBoundsException」について記載します。
IndexOutOfBoundsExceptionって何?
IndexOutOfBoundsExceptionをはじめて見て戸惑っている方、何故起きているのか分からない方もいると思いますので説明をしますと
ある種のインデックス (配列、文字列、ベクトルなど) が範囲外であることを示すためにスローされます。
引用:Java™ Platform Standard Edition 7
ということです。
存在しないインデックスを指定すると起きるよってことですね。
解決・回避方法は?
「存在しないインデックスを指定すると起きる」ので、
存在しないインデックスを指定しないようにすることがベストです。
この例外は適切なインデックスを指定すれば発生しません。
サンプルコード
以下をメモ帳やエディタにコピペしてください。
まずはListでIndexOutOfBoundsExceptionを起こします。
import java.util.ArrayList; class Sample{ public static void main(String[] args){ ArrayList<String> str = new ArrayList<String>(); str.add("とまと"); // インデックスは0 // インデックス1を取得して表示する System.out.println(str.get(1)); } }
これを実行してみますと…
IndexOutOfBoundsExceptionが起きました。
存在しないインデックスを指定したため起きたということが分かるかと思います。
適切なインデックスを指定し表示すると…
import java.util.ArrayList; class Sample{ public static void main(String[] args){ ArrayList<String> str = new ArrayList<String>(); str.add("とまと"); // インデックスは0 // インデックス0を取得して表示する System.out.println(str.get(0)); } }
ちゃんと「とまと」と表示されました。
まとめ
・IndexOutOfBoundsExceptionは存在しないインデックスを指定すると起きる例外
・適切なインデックスを指定すれば発生しない
・適切なインデックスを指定することで例外を出さないようにすることができる
今回はIndexOutOfBoundsExceptionを紹介しました。
わりと凡ミスででる例外かと思います。
この例外の派生クラスでArrayIndexOutOfBoundsExceptionというのがあります。
こちらは配列に限定された例外となります。
詳細は次回、ArrayIndexOutOfBoundsExceptionについて記事を書きたいと思います。