how handle arrayindexoutofboundsexception java
Ovaj vodič daje detaljno objašnjenje o važnom izuzeću koji su izbacili Java nizovi, tj. ArrayIndexOutOfBoundsException s jednostavnim primjerima:
Sve o Arraysima naučili smo u našim prethodnim vodičima. Nizovi su statične prirode, a njihova dimenzija ili veličina određuju se u trenutku njihove deklaracije. Također znamo da su ta veličina ili broj deklariranih elemenata za niz fiksni i numerirani od 0.
Logika programa je ponekad takva da program pokušava pristupiti elementu iz nepostojećeg indeksa. Na primjer, zbog kvarova u programu, program bi mogao pokušati pristupiti 11thelement u nizu od 10 elemenata. To rezultira abnormalnim stanjem.
što je sigurnosni ključ za usmjerivač
=> Pogledajte cjeloviti Java trening za početnike
Java pruža iznimku u paketu 'java.lang' koji se pojavljuje kada se pristupi nepostojećem indeksu niza. To je poznato kao 'ArrayIndexOutOfBoundsException'.
Što ćete naučiti:
ArrayIndexOutOfBoundsException
Kao što je već rečeno, kada pokušate pristupiti elementima niza preko određene duljine ili negativnog indeksa, kompajler baca 'ArrayIndexOutOfBoundsException'.
ArrayIndexOutOfBoundsException implementira 'serializable' sučelje i proizlazi iz 'indexOutOfBoundsException' koji je zauzvrat izveden iz klase RuntimeException koja je podrazred klase 'iznimka'. Sve ove klase pripadaju paketu 'java.lang'.
ArrayIndexOutOfBoundsException je runtime, neprovjerena iznimka i stoga ne treba izričito pozivati iz metode. Slijedi dijagram klasa ArrayIndexOutOfBoundsException koji prikazuje hijerarhiju nasljeđivanja kao i konstruktore za ovu iznimku.
Dijagram klase ArrayIndexOutOfBoundsException
Kao što je ranije objašnjeno, klasa ArrayIndexOutOfBoundsException ima tri superklase, tj. Java.lang.exception, java.lang. runtimeException i java.lang.indexOutOfBoundsException.
Dalje, vidjet ćemo neke primjere ArrayIndexOutOfBoundsException u javi.
Primjer iznimke ArrayIndexOutOfBounds
Pogledajmo prvi primjer koji prikazuje bačenu iznimku 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) + ' '); } }
Izlaz:
U gornjem programu imamo niz predmeta koji se sastoje od 5 elemenata. Međutim, u petlji for postavili smo uvjet iteracije kao 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.
Dolje je dat još jedan primjer pristupa negativnom 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)); }
Izlaz:
U gore navedenom programu deklariramo niz vrsta cijelih brojeva, a zatim pristupamo elementima pomoću pojedinačnih indeksa. Prvi je izraz valjan, ali u drugom smo izrazu pokušali pristupiti s indeksom = -4. Stoga drugi izraz baca ArrayIndexOutOfBoundsException kao što je prikazano u izlazu.
Izbjegavanje ArrayIndexOutOfBoundsException
Uobičajeni uzrok pojavljivanja ArrayIndexOutOfBoundsException je taj što programer griješi u korištenju indeksa polja.
Stoga programer može slijediti dolje navedene tehnike kako bi izbjegao pojavu ArrayIndexOutOfBoundsException.
Upotrijebite odgovarajuće indekse početka i završetka
Nizovima uvijek započinje indeks 0, a ne 1. Slično tome, posljednjem elementu niza može se pristupiti pomoću indeksa 'arraylength-1', a ne 'arraylength'. Programeri bi trebali biti oprezni dok koriste ograničenja polja i tako izbjegavati ArrayIndexOutOfBoundsException.
Korištenje Enhanced For Loop
Poboljšana petlja for ili za svaku puta ponavlja se preko susjednih memorijskih mjesta poput nizova i pristupa samo pravnim indeksima. Stoga, kada se koristi pojačana petlja for, ne trebamo brinuti o pristupu pogrešnim ili ilegalnim indeksima.
Primjer ponavljanja niza pomoću 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 + ' '); } } }
Izlaz:
U gore navedenom programu koristili smo poboljšanu petlju for za iteraciju niza predmeta. Imajte na umu da za ovu petlju ne moramo eksplicitno navesti indeks. Stoga se petlja ponavlja preko niza dok se ne postigne kraj niza.
Stoga je lako popraviti ArrayOutOfBoundsException koristeći odgovarajuće indekse i vodeći računa o određivanju ograničenja polja. Također možemo koristiti poboljšanu petlju for za iteraciju preko nizova.
Prijeđimo na odgovor na nekoliko često postavljanih pitanja u vezi s iznimkama u nizovima.
Često postavljana pitanja
P # 1) Zašto se događa ArrayIndexOutOfBoundsException?
Odgovor: ArrayIndexOutOfBoundsException se događa kada pokušate pristupiti indeksu niza koji ne postoji, tj. indeks je negativan ili je izvan granica s ograničenjima polja.
P # 2) Što je NegativeArraySizeException?
Odgovor: NegativeArraySizeException je runtime iznimka koja se baca ako je niz definiran s negativnom veličinom.
P # 3) Što je niz izvan vezane iznimke?
Odgovor: Polje izvan vezane iznimke događa se kada program pokuša pristupiti elementu niza specificiranjem negativnog indeksa ili indeksa koji nije u rasponu navedenog niza.
P # 4) Možemo li baciti NullPointerException u Javi?
Odgovor: Da, možete baciti NullPointerException na Javi, inače će JVM to učiniti umjesto vas.
P # 5) Je li NullPointerException označen ili nije?
Odgovor: NullPointerException nije označen i proširuje RuntimeException. To ne primorava programera da koristi catch blok za njegovo rukovanje.
Zaključak
U ovom uputstvu raspravljali smo o detaljima ArrayIndexOutOfBoundsException u Javi. Ova se iznimka obično izbacuje kada u programu pokušavamo pristupiti elementima niza koristeći negativni indeks ili indeks izvan granica, poput specificiranja indeksa koji je veći od zadane duljine polja.
Ovu se iznimku može izbjeći brigom o indeksima dok pristupate nizovima ili korištenjem poboljšane for petlje koja dizajnom pristupa samo pravnim indeksima.
U sljedećim ćemo tutorijalima prijeći na druge teme niza.
anime web stranice za besplatno gledanje anime na engleskom jeziku sinhronizirano
=> Ovdje istražite BESPLATNI tečaj Java.
Preporučena literatura
- Java Vodič za refleksiju s primjerima
- Vodič o dužini Java polja s primjerima koda
- Java iznimke i rukovanje iznimkama s primjerima
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Pristupiti modifikatorima u Javi - Vodič s primjerima
- Java Array - Kako ispisati elemente niza u Javi?
- Uvod u programski jezik Java - Video vodič
- Java SWING Vodič: Spremnici, komponente i upravljanje događajima