Какое исключение возникает при попытке доступа к элементу массива по индексу вне его допустимых границ?

Ответ

Возникает неконтролируемое (unchecked) исключение ArrayIndexOutOfBoundsException.

Когда выбрасывается:

  • При обращении к отрицательному индексу (например, arr[-1]).
  • При обращении к индексу, равному или большему длины массива (например, arr[arr.length]).

Пример:

int[] numbers = {10, 20, 30};
System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3

Как избежать: Всегда проверяйте индекс перед доступом.

int index = 5;
if (index >= 0 && index < numbers.length) {
    System.out.println(numbers[index]);
} else {
    System.out.println("Индекс " + index + " выходит за границы массива.");
}

Важно: Это подкласс IndexOutOfBoundsException. Аналогичное исключение для коллекций (например, List) — IndexOutOfBoundsException.

Ответ 18+ 🔞

А, ну ты глянь, какой подарок судьбы — ArrayIndexOutOfBoundsException! Это ж классика, блядь, как Муму у Тургенева, только в мире кода. Чувак, это когда ты такой весь из себя умный, решил к массиву обратиться, а он тебе — «а пошёл ты нахуй, такого индекса у меня нет!».

Когда эта хрень вылезает, как ядрёна вошь из-под воротника:

  • Ты лезешь в минус, типа arr[-1]. Ну, бля, а чего? Может, там секретный элемент? Неа, пиздец.
  • Или, что чаще, ты пытаешься достать элемент с индексом, который больше или РАВЕН длине массива. Да-да, arr[arr.length] — это тоже пиздец, потому что нумерация-то с нуля, ёпта! Если длина 3, то последний элемент — это arr[2]. А arr[3] — это уже за гранью, в мире духов, блядь.

Смотри, как это красиво обламывается:

int[] numbers = {10, 20, 30};
System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3

Вот и весь сказ. Хотел пятую конфетку из трёх взять. Ну и как, взял? В рот меня чих-пых!

Как не быть таким Герасимом, который топит программу вместо собачки: Проверяй, блядь, индекс, прежде чем лезть! Это не трусость, это здравый смысл, ёпта.

int index = 5;
if (index >= 0 && index < numbers.length) {
    System.out.println(numbers[index]); // Всё чики-пуки, заходи
} else {
    System.out.println("Индекс " + index + " выходит за границы массива."); // А вот тут, дружок, облом
}

Важный нюанс, чтобы не прослыть полупидором: Это частный случай IndexOutOfBoundsException. Для списков (List) и прочей коллекторской братвы исключение будет называться так же — IndexOutOfBoundsException. Но суть-то одна — лезешь туда, куда не просили, получаешь по ебалу.