HomeJavaArrayIndexOutOfBoundsExceptionと配列の扱い

JavaにおけるArrayIndexOutOfBoundsExceptionについてと、簡単なサンプルコードを掲載しています。

ArrayIndexOutOfBoundsExceptionとJavaの配列の扱い

ArrayIndexOutOfBoundsExceptionについて

JavaにおけるArrayIndexOutOfBoundsExceptionも
よく見ることになってしまう例外です。
ArrayIndexOutOfBoundsExceptionは、アプリ開発者側でデータを「何件持っている」という情報を
管理、チェックできていないために発生する例外です。
例えば、以下のようなコードで発生します。

String[] arr =  new String[2];
arr[0] = "one";
arr[1] = "two";
arr[2] = "three";

上記プログラムはコンパイルエラーにはなりませんが、実行すると
arr[2] = "three";
のところで、ArrayIndexOutOfBoundsExceptionが発生します。
配列の「器」の大きさを2つしか用意していないのに、その数を超えて配列にセットを試みたためです。
さすがに、セットするときに上記のようなミスをするケースは少ないですが
以下のように、取り出す際にもArrayIndexOutOfBoundsExceptionが発生します。

String[] arr =  new String[3];
arr[0] = "one";
arr[1] = "two";
arr[2] = "three";

for(int i=0; i<10; i++) {
    System.out.println(arr[i]);
}

これはサンプルコードなので、やはりこのようなミスはしないでしょうが
arrを取得するときに、他のメソッドからの戻り値などであった場合は
以下のようにしっかりと配列のlengthをチェックしてから取り出すようにしましょう。

String[] arr = new String[3];
arr[0] = "one";
arr[1] = "two";
arr[2] = "three";

for(int i=0; i<arr.length; i++) {
    System.out.println(arr[i]);
}

ここではnullチェックをしていませんが、他メソッドからの戻り値などの場合は
やはりnullチェックをしておきたいところでしょう。
Javaトップへ

ページトップへ

トピックアップ メニュー

トピックアップ リンク

Copyright (C) トピックアップ All Rights Reserved.
inserted by FC2 system