how handle arrayindexoutofboundsexception java
Ten samouczek zawiera szczegółowe wyjaśnienie dotyczące ważnego wyjątku zgłaszanego przez tablice Java, tj. Wyjątek ArrayIndexOutOfBoundsException z prostymi przykładami:
Dowiedzieliśmy się wszystkiego o tablicach w naszych poprzednich samouczkach. Tablice mają charakter statyczny, a ich wymiar lub rozmiar jest określany w momencie ich deklaracji. Wiemy również, że ten rozmiar lub liczba elementów zadeklarowanych dla tablicy są stałe i są numerowane od 0.
Czasami logika programu jest taka, że program próbuje uzyskać dostęp do elementu z nieistniejącego indeksu. Na przykład, z powodu usterek w programie program może próbować uzyskać dostęp do 11thelement w tablicy 10 elementów. Powoduje to nienormalny stan.
=> Sprawdź pełne szkolenie Java dla początkujących
Java udostępnia wyjątek w pakiecie „java.lang”, który jest generowany, gdy uzyskiwany jest dostęp do nieistniejącego indeksu tablicy. Jest to znane jako „wyjątek ArrayIndexOutOfBoundsException”.
Czego się nauczysz:
ArrayIndexOutOfBoundsException
Jak już wspomniano, podczas próby uzyskania dostępu do elementów tablicy poza określoną długością lub indeksem ujemnym kompilator zgłasza wyjątek „ArrayIndexOutOfBoundsException”.
ArrayIndexOutOfBoundsException implementuje interfejs „serializowalny” i wywodzi się z „indexOutOfBoundsException”, który z kolei pochodzi z klasy RuntimeException, która jest podklasą klasy „wyjątku”. Wszystkie te klasy należą do pakietu „java.lang”.
ArrayIndexOutOfBoundsException to wyjątek w czasie wykonywania, niesprawdzony i dlatego nie musi być jawnie wywoływany z metody. Poniżej znajduje się diagram klas ArrayIndexOutOfBoundsException, który przedstawia hierarchię dziedziczenia, a także konstruktory dla tego wyjątku.
Diagram klas ArrayIndexOutOfBoundsException
sposoby na oglądanie anime za darmo
Jak wyjaśniono wcześniej, klasa ArrayIndexOutOfBoundsException ma trzy nadklasy, tj. Java.lang.exception, java.lang. runtimeException i java.lang.indexOutOfBoundsException.
Następnie zobaczymy kilka przykładów wyjątku ArrayIndexOutOfBoundsException w java.
Przykład wyjątku ArrayIndexOutOfBounds
Zobaczmy pierwszy przykład, który pokazuje generowany wyjątek ArrayIndexOutOfBounds.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; //for loop iterates from 0 to 5 (length of array) for(int i=0;i<=subjects.length;i++) { //when ‘i’ reaches 5, it becomes invalid index and exception will be thrown System.out.print(subjects(i) + ' '); } }
Wynik:
W powyższym programie mamy tablice przedmiotów składające się z 5 elementów. Jednak w pętli for ustawiliśmy warunek iteracji na i<=subjects.length. Thus for the last iteration, the value of i is 5 which exceeds the array size. Hence, when printing array elements, the iteration i=5, results in ArrayIndexOutOfBoundsException being thrown.
Poniżej podano kolejny przykład uzyskania dostępu do ujemnego indeksu.
class Main { public static void main(String() args) { //array of integers Integer() intArray = {10,20,30,40,50}; //index = 0; accessing element is successful System.out.println('First element: ' + intArray(0)); //index = -4; accessing fails. Exception thrown System.out.println('Last element: ' + intArray(-4)); }
Wynik:
W powyższym programie deklarujemy tablicę typu integer, a następnie uzyskujemy dostęp do elementów za pomocą poszczególnych indeksów. Pierwsze wyrażenie jest prawidłowe, ale w drugim wyrażeniu próbowaliśmy uzyskać dostęp do elementu o indeksie = -4. Stąd drugie wyrażenie zgłasza ArrayIndexOutOfBoundsException, jak pokazano w danych wyjściowych.
Unikanie ArrayIndexOutOfBoundsException
Typową przyczyną wystąpienia ArrayIndexOutOfBoundsException jest to, że programista popełnia błąd podczas używania indeksów tablic.
W związku z tym programista może zastosować poniższe techniki, aby uniknąć wystąpienia ArrayIndexOutOfBoundsException.
Używaj właściwych indeksów początkowych i końcowych
Tablice zawsze zaczynają się od indeksu 0, a nie 1. Podobnie, dostęp do ostatniego elementu tablicy można uzyskać za pomocą indeksu „arraylength-1”, a nie „arraylength”. Programiści powinni zachować ostrożność podczas korzystania z limitów tablic, a tym samym unikać ArrayIndexOutOfBoundsException.
Korzystanie z rozszerzonej pętli For
Ulepszona pętla for lub for-each wykonuje iterację po sąsiadujących lokalizacjach pamięci, takich jak tablice, i uzyskuje dostęp tylko do indeksów prawnych. Dlatego, gdy używana jest pętla Enhanced for, nie musimy się martwić o dostęp do niewłaściwych lub nielegalnych indeksów.
Przykład iteracji po tablicy przy użyciu Enhanced for Loop.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; System.out.println('') //define enhanced for loop to iterate over array for(String strval:subjects) { //iterates only through valid indices System.out.print(strval + ' '); } } }
Wynik:
Użyliśmy rozszerzonej pętli for w powyższym programie do iteracji po tablicy tematów. Zauważ, że w przypadku tej pętli nie musimy jawnie określać indeksu. Stąd pętla iteruje po tablicy, aż do osiągnięcia końca tablicy.
najlepsze darmowe oprogramowanie poprawiające wydajność komputera
W związku z tym można łatwo naprawić wyjątek ArrayOutOfBoundsException, używając odpowiednich indeksów i uważając podczas określania limitów tablicy. Możemy również skorzystać z rozszerzonej pętli for do iteracji po tablicach.
Przejdźmy dalej, aby odpowiedzieć na kilka często zadawanych pytań dotyczących wyjątków w tablicach.
Często Zadawane Pytania
P # 1) Dlaczego występuje wyjątek ArrayIndexOutOfBoundsException?
Odpowiedź: ArrayIndexOutOfBoundsException występuje, gdy próbujesz uzyskać dostęp do indeksu tablicy, który nie istnieje, tj. indeks jest ujemny lub poza granicami tablicy.
P # 2) Co to jest wyjątek NegativeArraySizeException?
Odpowiedź: NegativeArraySizeException to wyjątek czasu wykonywania, który jest generowany, jeśli tablica jest zdefiniowana z ujemnym rozmiarem.
P # 3) Co to jest wyjątek tablicy poza powiązaniem?
Odpowiedź: Wyjątek tablicy poza powiązaniem występuje, gdy program próbuje uzyskać dostęp do elementu tablicy, określając indeks ujemny lub indeks, który nie należy do zakresu określonej tablicy.
Q # 4) Czy możemy zgłosić wyjątek NullPointerException w Javie?
Odpowiedź: Tak, możesz zgłosić wyjątek NullPointerException w Javie, inaczej JVM zrobi to za Ciebie.
P # 5) Czy NullPointerException jest zaznaczony czy niezaznaczony?
Odpowiedź: NullPointerException nie jest zaznaczony i rozszerza RuntimeException. Nie zmusza programisty do używania bloku catch do obsługi tego.
Wniosek
W tym samouczku omówiliśmy szczegóły wyjątku ArrayIndexOutOfBoundsException w języku Java. Ten wyjątek jest zwykle generowany, gdy w programie próbujemy uzyskać dostęp do elementów tablicy przy użyciu indeksu ujemnego lub indeksu spoza granic, jak w przypadku określenia indeksu, który jest większy niż określona długość tablicy.
Tego wyjątku można uniknąć, dbając o indeksy podczas uzyskiwania dostępu do tablic lub używając ulepszonej pętli for, która z założenia ma dostęp tylko do wskaźników prawnych.
W kolejnych samouczkach przejdziemy do innych tematów dotyczących tablic.
=> Poznaj BEZPŁATNY kurs Java tutaj.
rekomendowane lektury
- Samouczek dotyczący refleksji w języku Java z przykładami
- Samouczek dotyczący długości tablicy w języku Java z przykładami kodu
- Wyjątki Java i obsługa wyjątków z przykładami
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Modyfikatory dostępu w Javie - samouczek z przykładami
- Tablica Java - jak wydrukować elementy tablicy w języku Java?
- Wprowadzenie do języka programowania Java - samouczek wideo
- Samouczek Java SWING: kontener, komponenty i obsługa zdarzeń