how handle arrayindexoutofboundsexception java
Acest tutorial oferă o explicație detaliată despre o excepție importantă aruncată de Java Arrays, adică ArrayIndexOutOfBoundsException cu exemple simple:
Am învățat totul despre matrice în tutorialele noastre anterioare. Tablourile sunt de natură statică, iar dimensiunea sau dimensiunea sa sunt determinate în momentul declarării lor. Știm, de asemenea, că această dimensiune sau numărul de elemente declarate pentru matrice sunt fixe și sunt numerotate de la 0.
Uneori, logica programului este de așa natură încât programul încearcă să acceseze elementul dintr-un index inexistent. De exemplu, din cauza erorilor dintr-un program, un program ar putea încerca să acceseze 11aelement din matricea de 10 elemente. Acest lucru duce la o stare anormală.
=> Consultați instruirea completă Java pentru începători
Java oferă o excepție în pachetul „java.lang” care este aruncat atunci când se accesează un index de matrice inexistent. Aceasta este cunoscută sub numele de „ArrayIndexOutOfBoundsException”.
Ce veți învăța:
Indicele matricei este în afara limitelor
După cum sa menționat deja, atunci când încercați să accesați elementele matricei dincolo de o lungime specificată sau un indice negativ, compilatorul aruncă „ArrayIndexOutOfBoundsException”.
ArrayIndexOutOfBoundsException implementează o interfață „serializabilă” și derivă din „indexOutOfBoundsException” care, la rândul său, este derivat din clasa RuntimeException, care este o subclasă a clasei „excepție”. Toate aceste clase aparțin pachetului „java.lang”.
ArrayIndexOutOfBoundsException este o excepție runtime, necontrolată și, prin urmare, nu trebuie apelată în mod explicit dintr-o metodă. Urmează diagrama de clase a ArrayIndexOutOfBoundsException care arată ierarhia moștenirii, precum și constructorii pentru această excepție.
Diagrama clasei ArrayIndexOutOfBoundsException
După cum s-a explicat mai devreme, clasa ArrayIndexOutOfBoundsException are trei superclase, adică java.lang.exception, java.lang. runtimeException și java.lang.indexOutOfBoundsException.
În continuare, vom vedea câteva exemple de ArrayIndexOutOfBoundsException în java.
cum se instalează un fișier .jar
Exemplu de excepție ArrayIndexOutOfBounds
Să vedem primul exemplu care arată ArrayIndexOutOfBounds Exception fiind aruncat.
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) + ' '); } }
Ieșire:
În programul de mai sus, avem subiecte matrice formate din 5 elemente. Cu toate acestea, în bucla for, am stabilit condiția de iterație ca 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.
Dat mai jos este un alt exemplu de accesare a indicelui negativ.
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)); }
Ieșire:
În programul de mai sus, declarăm o matrice de tip întreg și apoi accesăm elementele folosind indici individuali. Prima expresie este validă, dar în a doua expresie, am încercat să accesăm elementul la index = -4. Prin urmare, a doua expresie aruncă ArrayIndexOutOfBoundsException așa cum se arată în ieșire.
Evitarea ArrayIndexOutOfBoundsException
Cauza comună a apariției ArrayIndexOutOfBoundsException este că programatorul face o greșeală în utilizarea indicilor matricei.
Astfel, programatorul poate urma tehnicile de mai jos pentru a evita apariția ArrayIndexOutOfBoundsException.
Utilizați indicii de început și sfârșit corespunzători
Matricile încep întotdeauna cu indexul 0 și nu 1. În mod similar, ultimul element din matrice poate fi accesat folosind indexul „arraylength-1” și nu „arraylength”. Programatorii ar trebui să fie atenți în timp ce utilizează limitele matricei și să evite astfel ArrayIndexOutOfBoundsException.
Utilizarea Enhanced For Loop
O buclă îmbunătățită pentru buclă sau pentru fiecare buclă iterează peste locații de memorie adiacente, cum ar fi matrici și accesează numai indicii legali. Prin urmare, atunci când este utilizată îmbunătățirea pentru buclă, nu trebuie să ne facem griji cu privire la accesarea unor indici greșiti sau ilegali.
Exemplu de iterație pe o matrice utilizând 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 + ' '); } } }
Ieșire:
Am folosit o buclă îmbunătățită pentru programul de mai sus pentru a itera peste gama de subiecte. Rețineți că pentru această buclă nu trebuie să specificăm indexul în mod explicit. Prin urmare, bucla iterează peste matrice până la sfârșitul matricei.
Astfel, este ușor să remediați ArrayOutOfBoundsException utilizând indici corespunzători și având grijă la specificarea limitelor matricei. Putem folosi, de asemenea, îmbunătățirea pentru buclă pentru a itera peste matrice.
Să continuăm să răspundem la câteva întrebări frecvente cu privire la excepțiile din tablouri.
întrebări frecvente
Q # 1) De ce apare ArrayIndexOutOfBoundsException?
Răspuns: ArrayIndexOutOfBoundsException apare atunci când încercați să accesați un index de matrice care nu există. indicele este fie negativ, fie în afara limitelor cu limitele matricei.
Q # 2) Ce este NegativeArraySizeException?
Răspuns: NegativeArraySizeException este o excepție de execuție care este aruncată dacă o matrice este definită cu o dimensiune negativă.
Q # 3) Ce este matricea din excepția legată?
Răspuns: O matrice în afara excepției legate apare atunci când un program încearcă să acceseze un element de matrice specificând un indice negativ sau un indice care nu se află în intervalul matricei specificate.
Q # 4) Putem arunca NullPointerException în Java?
Răspuns: Da, puteți arunca NullPointerException în Java sau altfel JVM o va face pentru dvs.
Q # 5) NullPointerException este bifată sau debifată?
Răspuns: NullPointerException nu este bifat și extinde RuntimeException. Nu obligă programatorul să utilizeze blocul de captare pentru a-l gestiona.
Concluzie
În acest tutorial, am discutat detaliile ArrayIndexOutOfBoundsException în Java. Această excepție este de obicei aruncată atunci când într-un program încercăm să accesăm elementele matricei folosind indexul negativ sau indexul în afara limitelor, cum ar fi specificarea unui indice mai mare decât lungimea matricei specificată.
Această excepție poate fi evitată având grijă de indici în timp ce accesați matricele sau utilizând o buclă îmbunătățită care, prin design, accesează numai indici legali.
Vom trece la alte subiecte matrice în tutorialele noastre ulterioare.
=> Explorează cursul Java GRATUIT aici.
Lectură recomandată
- Tutorial de reflecție Java cu exemple
- Tutorial Java Lungime matrice cu exemple de cod
- Excepții Java și gestionarea excepțiilor cu exemple
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Modificatori de acces în Java - Tutorial cu exemple
- Java Array - Cum se imprimă elemente ale unui array în Java?
- Introducere în limbajul de programare Java - Video Tutorial
- Tutorial Java SWING: Container, componente și gestionarea evenimentelor