Ошибка ArrayIndexOutOfBoundsException Java
ArrayIndexOutOfBoundsException – это исключение, появляющееся во время выполнения. Оно возникает тогда, когда мы пытаемся обратиться к элементу массива по отрицательному или превышающему размер массива индексу. Давайте посмотрим на примеры, когда получается ArrayIndexOutOfBoundsException в программе на Java.
Попробуйте выполнить такой код:
static int number=11;
public static String[][] transactions=new String[8][number];
public static void deposit(double amount){
transactions[4][number]="deposit";
number++;
}
public static void main(String[] args) {
deposit(11);
}
}
Вы увидите ошибку:
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at sample.Main.deposit(Main.java:22) at sample.Main.main(Main.java:27) Exception running application sample.Main Process finished with exit code 1Что здесь произошло? Ошибка в строке 27 – мы вызвали метод deposit(), а в нем уже, в строке 22 – попытались внести в поле массива значение "deposit". Почему выкинуло исключение? Дело в том, что мы инициализировали массив размера 11 (number = 11), н опопытались обратиться к 12-му элементу. Нумерация элементов массива начинается с нуля. Так что здесь надо сделать, например, так
public static String[][] transactions=new String[8][100];Но вообще, это плохой код, так писать не надо. Давайте рассмотрим еще один пример возникновения ошибки ArrayIndexOutOfBoundsException:
public static void main(String[] args) {
Random random = new Random();
int [] arr = new int[10];
for (int i = 0; i <= arr.length; i++) {
arr[i] = random.nextInt(100);
System.out.println(arr[i]);
}
}
Здесь массив заполняется случайными значениями. При выполнении IntelliJ IDEA выдаст ошибку
Caused by: java.lang.ArrayIndexOutOfBoundsException: 10 at sample.Main.main(Main.java:37)В строке 37 мы заносим значение в массив. Ошибка возникла помтому, что индекса 10 нет в массиве arr, поэтому условие цикла i <= arr.length надо поменять на i < arr.length
Конструкция try для ArrayIndexOutOfBoundsException
ArrayIndexOutOfBoundsException можно обработать с помощью конструкции try-catch. Для этого оберните try то место, где происходит обращение к элементу массива по индексу, например, заносится значение. Как-то так:
try {
array[index] = "что-то";
}
catch (ArrayIndexOutOfBoundsException ae){
System.out.println(ae);
}
Но я бы рекомендовал вам все же не допускать данной ошибки, писать код таким образом, чтобы не пришлось ловить исключение ArrayIndexOutOfBoundsException.

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты