how handle arrayindexoutofboundsexception java
quel est le bogue dans les tests de logiciels avec exemple
Ce didacticiel fournit une explication détaillée sur une exception importante levée par les tableaux Java, c'est-à-dire ArrayIndexOutOfBoundsException avec des exemples simples:
Nous avons tout appris sur les tableaux dans nos précédents tutoriels. Les tableaux sont de nature statique et leur dimension ou taille est déterminée au moment de leur déclaration. On sait aussi que cette taille ou le nombre d'éléments déclarés pour le tableau sont fixes et numérotés à partir de 0.
Parfois, la logique du programme est telle que le programme tente d'accéder à l'élément à partir d'un index non existant. Par exemple, en raison de problèmes dans un programme, un programme peut essayer d'accéder au 11eélément dans le tableau de 10 éléments. Cela entraîne une condition anormale.
=> Découvrez la formation Java complète pour les débutants
Java fournit une exception dans le package 'java.lang' qui est lancée lors de l'accès à un index de tableau non existant. Ceci est connu sous le nom de «ArrayIndexOutOfBoundsException».
Ce que vous apprendrez:
ArrayIndexOutOfBoundsException
Comme déjà indiqué, lorsque vous essayez d'accéder à des éléments de tableau au-delà d'une longueur spécifiée ou d'un index négatif, le compilateur lève l'exception «ArrayIndexOutOfBoundsException».
ArrayIndexOutOfBoundsException implémente une interface «sérialisable» et dérive de «indexOutOfBoundsException» qui à son tour est dérivée de la classe RuntimeException qui est une sous-classe de la classe «exception». Toutes ces classes appartiennent au package «java.lang».
ArrayIndexOutOfBoundsException est une exception d'exécution non vérifiée et n'a donc pas besoin d'être explicitement appelée à partir d'une méthode. Voici le diagramme de classes de ArrayIndexOutOfBoundsException qui montre la hiérarchie d'héritage ainsi que les constructeurs de cette exception.
Diagramme de classes de ArrayIndexOutOfBoundsException
Comme expliqué précédemment, la classe ArrayIndexOutOfBoundsException a trois superclasses, à savoir java.lang.exception, java.lang. runtimeException et java.lang.indexOutOfBoundsException.
Ensuite, nous verrons quelques exemples de ArrayIndexOutOfBoundsException en java.
Exemple d'exception ArrayIndexOutOfBounds
Voyons le premier exemple qui montre l’exception ArrayIndexOutOfBounds levée.
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) + ' '); } }
Production:
quelle est ma clé de sécurité réseau pour le hotspot verizon
Dans le programme ci-dessus, nous avons des sujets de tableau composés de 5 éléments. Cependant, dans la boucle for, nous avons défini la condition d'itération comme 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.
Ci-dessous, un autre exemple d'accès à l'indice négatif.
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)); }
Production:
Dans le programme ci-dessus, nous déclarons un tableau de type entier puis accédons aux éléments à l'aide d'indices individuels. La première expression est valide mais dans la seconde expression, nous avons tenté d'accéder à l'élément à index = -4. Par conséquent, la deuxième expression lève ArrayIndexOutOfBoundsException comme indiqué dans la sortie.
Éviter ArrayIndexOutOfBoundsException
La cause courante de l'apparition de ArrayIndexOutOfBoundsException est que le programmeur fait une erreur en utilisant les indices de tableau.
Ainsi, le programmeur peut suivre les techniques ci-dessous pour éviter l'apparition de ArrayIndexOutOfBoundsException.
Utilisez des indices de début et de fin appropriés
Les tableaux commencent toujours par l’index 0 et non par 1. De même, le dernier élément du tableau est accessible à l’aide de l’index «arraylength-1» et non de «arraylength». Les programmeurs doivent être prudents lorsqu'ils utilisent les limites du tableau et éviter ainsi ArrayIndexOutOfBoundsException.
Utilisation de la boucle For améliorée
Une boucle for ou for-each améliorée effectue une itération sur des emplacements mémoire contigus comme des tableaux et n'accède qu'aux index autorisés. Par conséquent, lorsque la boucle for améliorée est utilisée, nous n'avons pas à nous soucier de l'accès à des index erronés ou illégaux.
Exemple d'itération sur un tableau à l'aide de 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 + ' '); } } }
Production:
Nous avons utilisé une boucle for améliorée dans le programme ci-dessus pour parcourir le tableau des sujets. Notez que pour cette boucle, nous n'avons pas besoin de spécifier l'index explicitement. Par conséquent, la boucle itère sur le tableau jusqu'à ce que la fin du tableau soit atteinte.
Ainsi, il est facile de corriger l'exception ArrayOutOfBoundsException en utilisant les indices appropriés et en prenant soin de spécifier les limites du tableau. Nous pouvons également utiliser la boucle for améliorée pour parcourir les tableaux.
Passons maintenant à quelques questions fréquemment posées concernant les exceptions dans les tableaux.
Questions fréquemment posées
Q # 1) Pourquoi ArrayIndexOutOfBoundsException se produit-il?
Répondre: ArrayIndexOutOfBoundsException se produit lorsque vous essayez d'accéder à un index de tableau qui n'est pas existant. l'indice est soit négatif, soit hors limites avec les limites du tableau.
Q # 2) Qu'est-ce que NegativeArraySizeException?
Répondre: NegativeArraySizeException est une exception d'exécution qui est levée si un tableau est défini avec une taille négative.
Q # 3) Qu'est-ce qu'un tableau hors de l'exception liée?
Répondre: Une exception de tableau hors limite se produit lorsqu'un programme tente d'accéder à un élément de tableau en spécifiant un index négatif ou un index qui n'est pas dans la plage du tableau spécifié.
Q # 4) Pouvons-nous lancer NullPointerException en Java?
Répondre: Oui, vous pouvez lancer NullPointerException en Java ou bien la JVM le fera pour vous.
Q # 5) NullPointerException est-il coché ou décoché?
Répondre: NullPointerException n'est pas cochée et étend RuntimeException. Cela n'oblige pas le programmeur à utiliser le bloc catch pour le gérer.
Conclusion
Dans ce didacticiel, nous avons abordé les détails de ArrayIndexOutOfBoundsException en Java. Cette exception est généralement levée lorsque, dans un programme, nous essayons d'accéder aux éléments du tableau à l'aide de l'index négatif ou de l'index hors limites, comme en spécifiant un index supérieur à la longueur de tableau spécifiée.
Cette exception peut être évitée en prenant soin des index lors de l'accès aux tableaux ou en utilisant la boucle for améliorée qui, par conception, n'accède qu'aux index légaux.
Nous passerons à d'autres sujets relatifs aux tableaux dans nos didacticiels suivants.
=> Découvrez le cours Java GRATUIT ici.
passer un tableau à une méthode java
lecture recommandée
- Tutoriel de réflexion Java avec des exemples
- Tutoriel Java Array Length avec des exemples de code
- Exceptions Java et gestion des exceptions avec des exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Modificateurs d'accès en Java - Tutoriel avec des exemples
- Java Array - Comment imprimer des éléments d'un tableau en Java?
- Introduction au langage de programmation Java - Tutoriel vidéo
- Tutoriel Java SWING: Conteneur, composants et gestion des événements