how handle arrayindexoutofboundsexception java
Ta vadnica ponuja podrobno razlago pomembne izjeme, ki jo vržejo Java Arrays, tj. ArrayIndexOutOfBoundsException s preprostimi primeri:
Vse o Arrays smo izvedeli v naših prejšnjih vajah. Nizi so po naravi statični, njegova dimenzija ali velikost pa se določi ob njihovi izjavi. Vemo tudi, da je ta velikost ali število elementov, prijavljenih za matriko, fiksna in oštevilčena od 0.
Včasih je programska logika takšna, da program poskuša dostopiti do elementa iz neobstoječega indeksa. Na primer zaradi napak v programu lahko program poskusi dostopati do 11thelement v nizu 10 elementov. Posledica tega je nenormalno stanje.
=> Oglejte si celotno usposabljanje za Java za začetnike
Java ponuja izjemo v paketu 'java.lang', ki se sproži ob dostopu do neobstoječega indeksa matrike. To je znano kot 'ArrayIndexOutOfBoundsException'.
Kaj se boste naučili:
ArrayIndexOutOfBoundsException
Kot že rečeno, ko poskušate dostopati do elementov matrike preko določene dolžine ali negativnega indeksa, prevajalnik vrže ‘ArrayIndexOutOfBoundsException’.
ArrayIndexOutOfBoundsException izvaja 'serializable' vmesnik in izhaja iz 'indexOutOfBoundsException', ki pa izhaja iz razreda RuntimeException, ki je podrazred razreda 'izjeme'. Vsi ti razredi pripadajo paketu 'java.lang'.
ArrayIndexOutOfBoundsException je izvajalna, nepreverjena izjema, zato je ni treba izrecno klicati iz metode. Sledi diagram razredov ArrayIndexOutOfBoundsException, ki prikazuje hierarhijo dedovanja in konstruktorje za to izjemo.
Diagram razredov ArrayIndexOutOfBoundsException
Kot smo že pojasnili, ima razred ArrayIndexOutOfBoundsException tri superrazrede, to je java.lang.exception, java.lang. runtimeException in java.lang.indexOutOfBoundsException.
Nato bomo videli nekaj primerov ArrayIndexOutOfBoundsException v javi.
Primer izjeme ArrayIndexOutOfBounds
Poglejmo prvi primer, ki prikazuje vrženo izjemo ArrayIndexOutOfBounds.
vprašanja in odgovori za ročno preizkušanje intervjujev za 3-letne izkušnje
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) + ' '); } }
Izhod:
V zgornjem programu imamo nabor predmetov, sestavljen iz 5 elementov. Vendar smo v zanki for nastavili pogoj ponovitve kot 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.
Spodaj je še en primer dostopa do negativnega indeksa.
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)); }
Izhod:
V zgornjem programu razglasimo vrsto celoštevilčnega tipa in nato do elementov dostopamo s pomočjo posameznih indeksov. Prvi izraz je veljaven, v drugem izrazu pa smo poskušali dostopati do elementa z indeksom = -4. Zato drugi izraz vrže ArrayIndexOutOfBoundsException, kot je prikazano v izhodu.
Izogibanje ArrayIndexOutOfBoundsException
Pogost vzrok za pojav ArrayIndexOutOfBoundsException je ta, da se programer zmoti pri uporabi indeksov polj.
Tako lahko programer sledi spodnjim tehnikam, da se izogne pojavu ArrayIndexOutOfBoundsException.
Uporabite ustrezne indekse začetka in konca
Polja se vedno začnejo z indeksom 0 in ne 1. Podobno lahko do zadnjega elementa v matriki dostopate z uporabo indeksa ‘arraylength-1’ in ne ‘arraylength’. Programerji morajo biti previdni pri uporabi omejitev polja in se tako izogibati ArrayIndexOutOfBoundsException.
Uporaba Enhanced For Loop
Izboljšana zanka for ali za vsako se ponovi čez sosednja pomnilniška mesta, kot so nizi, in dostopa samo do pravnih indeksov. Ko se uporablja zanka izboljšane for, nam ni treba skrbeti za dostop do napačnih ali nezakonitih indeksov.
Primer ponovitve nad matriko z uporabo 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 + ' '); } } }
Izhod:
V zgornjem programu smo uporabili izboljšano zanko for za iteracijo po vrsti predmetov. Upoštevajte, da za to zanko indeksa ni treba izrecno določiti. Zato se zanka ponavlja skozi matriko, dokler ni dosežen konec matrike.
Tako je ArrayOutOfBoundsException enostavno popraviti z uporabo ustreznih indeksov in previdnostjo pri določanju omejitev polja. Izboljšano zanko for lahko uporabimo tudi za iteracijo po nizih.
Nadaljujmo z odgovori na nekaj pogosto zastavljenih vprašanj v zvezi z izjemami v nizih.
Pogosto zastavljena vprašanja
V # 1) Zakaj pride do ArrayIndexOutOfBoundsException?
vprašanja za intervju z javascriptom za izkušene strokovnjake
Odgovor: ArrayIndexOutOfBoundsException se pojavi, ko poskušate dostopati do indeksa matrike, ki ne obstaja, tj. indeks je bodisi negativen bodisi zunaj meja z omejitvami polja.
V # 2) Kaj je NegativeArraySizeException?
Odgovor: NegativeArraySizeException je izjema med izvajanjem, ki se vrže, če je polje definirano z negativno velikostjo.
V # 3) Kaj je matrika iz vezane izjeme?
Odgovor: Matrika iz vezane izjeme se pojavi, ko program poskuša dostopati do elementa matrike z podajanjem negativnega indeksa ali indeksa, ki ni v obsegu podane matrike.
V # 4) Ali lahko v Java vržemo NullPointerException?
Odgovor: Da, NullPointerException lahko vržete v Javo, sicer JVM to stori namesto vas.
V # 5) Ali je NullPointerException označen ali ne?
Odgovor: NullPointerException ni označen in razširja RuntimeException. Programerja ne prisili, da z njim uporablja blok catch.
Zaključek
V tej vadnici smo razpravljali o podrobnostih ArrayIndexOutOfBoundsException v Javi. Ta izjema se običajno vrže, ko v programu poskušamo dostopati do elementov matrike z uporabo negativnega indeksa ali indeksa zunaj meja, kot je določanje indeksa, ki je večji od določene dolžine polja.
Tej izjemi se je mogoče izogniti tako, da poskrbite za indekse med dostopom do nizov ali z uporabo izboljšane zanke for, ki po zasnovi dostopa samo do pravnih indeksov.
V naslednjih vajah bomo prešli na druge teme o nizih.
=> Tukaj raziščite BREZPLAČEN tečaj Java.
Priporočeno branje
- Vadnica za refleksijo Java s primeri
- Vadnica za dolžino polja Java s primeri kode
- Java izjeme in obravnava izjem z primeri
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Dostopni modifikatorji v Javi - Vadnica s primeri
- Java Array - Kako natisniti elemente polja v Javi?
- Uvod v programski jezik Java - Video vadnica
- Java SWING Vadnica: Vsebnik, komponente in obdelava dogodkov