ArrayIndexOutOfBoundsException w Javie

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

ArrayIndexOutOfBoundsException to wyjątek w języku Java, który występuje przy próbie odwołania się do elementu tablicy za pomocą niepoprawnego indeksu.

W Javie indeksowanie tablic zaczyna się od 0. Jeśli tablica ma n elementów, poprawne indeksy mieszczą się w zakresie od 0 do n - 1.

Kiedy występuje wyjątek?

Wyjątek pojawi się, gdy indeks:

  • jest równy rozmiarowi tablicy,
  • jest większy od rozmiaru tablicy,
  • jest liczbą ujemną.

Przykład:

int[] liczby = {10, 20, 30};

System.out.println(liczby[0]); // poprawnie: 10
System.out.println(liczby[2]); // poprawnie: 30
System.out.println(liczby[3]); // błąd

Tablica liczby ma 3 elementy, więc jej poprawne indeksy to 0, 1, 2. Indeks 3 jest już poza zakresem, dlatego zostanie rzucony wyjątek ArrayIndexOutOfBoundsException.

Ważne na egzaminie

Błąd nie zależy od wartości przechowywanej w elemencie tablicy, lecz od indeksu, którym próbujemy się do niego odwołać.

Niepoprawne jest więc stwierdzenie, że wyjątek występuje, gdy wartość elementu przekracza rozmiar tablicy. Liczy się wyłącznie to, czy indeks mieści się w dozwolonym zakresie.

Jak unikać błędu?

Najczęściej używa się właściwości length:

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

Warunek i < liczby.length zabezpiecza przed wyjściem poza ostatni poprawny indeks.