how handle arrayindexoutofboundsexception java
Aquest tutorial proporciona una explicació detallada sobre una excepció important generada per Java Arrays, és a dir, ArrayIndexOutOfBoundsException amb exemples simples:
Hem après tot sobre matrius als nostres tutorials anteriors. Les matrius tenen una naturalesa estàtica i la seva dimensió o mida es determina en el moment de la seva declaració. També sabem que aquesta mida o el nombre d'elements declarats per a la matriu són fixos i estan numerats a partir de 0.
De vegades, la lògica del programa és tal que el programa intenta accedir a l'element des d'un índex inexistent. Per exemple, a causa d'errors en un programa, és possible que un programa intenti accedir a l'11thelement a la matriu de 10 elements. Això es tradueix en un estat anormal.
=> Consulteu la formació completa de Java per a principiants
Java proporciona una excepció al paquet ‘java.lang’ que es genera quan s’accedeix a un índex de matriu inexistent. Això es coneix com a 'ArrayIndexOutOfBoundsException'.
Què aprendreu:
ArrayIndexOutOfBoundsException
Com ja s’ha dit, quan intenteu accedir a elements de matriu més enllà d’una longitud especificada o d’un índex negatiu, el compilador llança la ‘ArrayIndexOutOfBoundsException’.
ArrayIndexOutOfBoundsException implementa una interfície 'serialitzable' i deriva de la 'indexOutOfBoundsException' que al seu torn es deriva de la classe RuntimeException que és una subclasse de la classe 'exception'. Totes aquestes classes pertanyen al paquet ‘java.lang’.
ArrayIndexOutOfBoundsException és una excepció no executada en temps d'execució i, per tant, no ha de ser cridada explícitament des d'un mètode. A continuació es mostra el diagrama de classes de ArrayIndexOutOfBoundsException que mostra la jerarquia d’herències, així com els constructors d’aquesta excepció.
Diagrama de classes de l'excepció ArrayIndexOutOfBounds
Com s’ha explicat anteriorment, la classe ArrayIndexOutOfBoundsException té tres superclasses, és a dir, java.lang.exception, java.lang. runtimeException i java.lang.indexOutOfBoundsException.
A continuació, veurem alguns exemples d’ArrayIndexOutOfBoundsException a Java.
Exemple d'excepció ArrayIndexOutOfBounds
Vegem el primer exemple que mostra l'excepció ArrayIndexOutOfBounds que s'està llançant.
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) + ' '); } }
Sortida:
Al programa anterior, tenim matèries de matriu formades per 5 elements. Tanmateix, al bucle for, hem establert la condició d'iteració com a 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.
A continuació es mostra un altre exemple d’accés a l’índex negatiu.
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)); }
Sortida:
Al programa anterior, declarem una matriu de tipus enter i accedim als elements mitjançant índexs individuals. La primera expressió és vàlida, però a la segona hem intentat accedir a l’element a index = -4. Per tant, la segona expressió genera ArrayIndexOutOfBoundsException tal com es mostra a la sortida.
Evitant ArrayIndexOutOfBoundsException
La causa més comuna de l'aparició d'ArrayIndexOutOfBoundsException és que el programador comet un error en utilitzar els índexs de matriu.
Per tant, el programador pot seguir les tècniques següents per evitar l'aparició d'ArrayIndexOutOfBoundsException.
Utilitzeu índexs d’inici i finalització adequats
Les matrius sempre comencen per l’índex 0 i no 1. De la mateixa manera, es pot accedir a l’últim element de la matriu mitjançant l’índex ‘longitud d’arrayl-1’ i no ‘longitud d’arraia’. Els programadors han de tenir precaució mentre utilitzen els límits de la matriu i, per tant, evitar ArrayIndexOutOfBoundsException.
Utilitzant Enhanced For Loop
Un bucle millorat o per a cada bucle itera per ubicacions de memòria contigües com ara matrius i només accedeix als índexs legals. Per tant, quan s’utilitza la funció millorada per a bucles, no ens hem de preocupar de l’accés a índexs equivocats o il·legals.
Exemple d'iteració sobre una matriu mitjançant 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 + ' '); } } }
Sortida:
Hem utilitzat un bucle millorat per al programa anterior per recórrer la matèria. Tingueu en compte que per a aquest bucle no cal especificar explícitament l’índex. Per tant, el bucle itera sobre la matriu fins que s’arriba al final de la matriu.
Per tant, és fàcil solucionar l'excepció ArrayOutOfBoundsException mitjançant l'ús d'índexs adequats i amb precaució a l'hora d'especificar els límits de la matriu. També podem fer ús de la funció de bucle millorat per iterar sobre les matrius.
Passem a respondre algunes preguntes més freqüents sobre les excepcions a les matrius.
Preguntes freqüents
P # 1) Per què es produeix ArrayIndexOutOfBoundsException?
Resposta: ArrayIndexOutOfBoundsException es produeix quan intenteu accedir a un índex de matriu que no existeix, és a dir. l'índex és negatiu o està fora de límit amb els límits de matriu.
P # 2) Què és NegativeArraySizeException?
Resposta: NegativeArraySizeException és una excepció en temps d'execució que es genera si es defineix una matriu amb una mida negativa.
P # 3) Què és la matriu fora de l'excepció limitada?
Resposta: Una matriu fora de l'excepció limitada es produeix quan un programa intenta accedir a un element de matriu especificant un índex negatiu o un índex que no està dins de l'interval de la matriu especificada.
Q # 4) Podem llançar NullPointerException a Java?
Resposta: Sí, podeu llançar NullPointerException a Java o la JVM ho farà per vosaltres.
P # 5) Està marcada o desmarcada NullPointerException?
Resposta: NullPointerException no està marcat i amplia RuntimeException. No obliga el programador a utilitzar el bloc de captura per gestionar-lo.
la millor eina de reparació gratuïta de Windows 7
Conclusió
En aquest tutorial, hem discutit els detalls de ArrayIndexOutOfBoundsException a Java. Aquesta excepció sol generar-se quan en un programa intentem accedir als elements de la matriu mitjançant l'índex negatiu o l'índex fora de límits, com especificar un índex superior a la longitud de matriu especificada.
Aquesta excepció es pot evitar tenint cura dels índexs mentre accediu a les matrius o mitjançant un bucle millorat que, mitjançant el disseny, només accedeix a índexs legals.
Passarem a altres temes de matriu en els nostres tutorials posteriors.
=> Exploreu aquí el curs de Java GRATU HereT.
Lectura recomanada
- Tutorial de reflexió de Java amb exemples
- Tutorial de longitud de matriu de Java amb exemples de codi
- Excepcions de Java i tractament d’excepcions amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Modificadors d'accés a Java: tutorial amb exemples
- Java Array - Com imprimir elements d'un array a Java?
- Introducció al llenguatge de programació Java: vídeo tutorial
- Tutorial Java SWING: Gestió de contenidors, components i esdeveniments