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トップへ