Comment gérer l’exception StringIndexOutOfBoundsException en Java

Les String sont utilisées pour stocker une séquence de caractères en Java, elles sont traitées comme des objets. La classe String du package java.lang représente une chaîne.
 
 

Index dans une chaîne

Un chaîne est un tableau de caractères, tout comme les tableaux, la position de chaque caractère est représentée par un index (à partir de 0). Par exemple, si nous avons créé une chaîne comme :

String name = "Alex";

La position de chaque caractère est représentée comme suit:
 

 
L’exception StringIndexOutOfBoundsException : Si vous essayez d’accéder au caractère d’une chaîne au niveau de l’index qui est supérieur à sa longueur, l’exception StringIndexOutOfBoundsException est levée.
 
 

Exemple:

Dans le code Java suivant, nous créons une chaîne de longueur 11 et essayons d’afficher l’élément à l’index 20, en utilisant la méthode charAt().

public class Main {
   public static void main(String[] args) {
      String str = "WayToLearnX";
      System.out.println("Taille de la chaîne: "+str.length());
      for(int i=0; i < str.length(); i++) {
         System.out.println(str.charAt(i));
      }
      //essayons d'afficher l'élément à l'index 20
      System.out.println(str.charAt(20));
   }
}

 
Sortie:

Taille de la chaîne: 11
W
a
y
T
o
L
e
a
r
n
X
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 20
	at java.lang.String.charAt(String.java:658)
	at Main.main(Main.java:9)

Puisque nous accédons à l’élément à l’index supérieur à sa longueur, l’exception StringIndexOutOfBoundsException est levée.
 

Comment gérer l’exception StringIndexOutOfBoundsException?

Nous pouvons gérer l’exception StringIndexOutOfBoundsException de deux manières

  • Utilisez le bloc try et catch entourant le code qui peut provoquer l’exception StringIndexOutOfBoundsException.
  • Une autre façon de gérer l’exception est l’utilisation du mot clé throws.

 
 

Exemple:
public class Main {
   public static void main(String[] args) {
      String str = "WayToLearnX";
      System.out.println("Taille de la chaîne: "+str.length());
      for(int i=0; i < str.length(); i++) {
         System.out.println(str.charAt(i));
      }
      try {
         System.out.println(str.charAt(20));
      } catch (StringIndexOutOfBoundsException e) {
         System.out.println("StringIndexOutOfBoundsException est traité");
      }
      System.out.println("Continuez votre code ici");
   }
}

 
Sortie:

Taille de la chaîne: 11
W
a
y
T
o
L
e
a
r
n
X
StringIndexOutOfBoundsException est traité
Continuez votre code ici