Gestion des exceptions Java (avec exemples)

Dans le didacticiel, nous découvrirons différentes approches de gestion des exceptions en Java à l'aide d'exemples.

Dans le dernier didacticiel, nous avons découvert les exceptions Java. Nous savons que les exceptions terminent anormalement l'exécution d'un programme.

C'est pourquoi il est important de gérer les exceptions. Voici une liste des différentes approches pour gérer les exceptions en Java.

  • essayez… catch block
  • enfin bloquer
  • lancer et jeter le mot-clé

1. Java try… catch bloc

Le bloc try-catch est utilisé pour gérer les exceptions en Java. Voici la syntaxe de try… catchblock:

 try ( // code ) catch(Exception e) ( // code )

Ici, nous avons placé le code qui pourrait générer une exception à l'intérieur du trybloc. Chaque trybloc est suivi d'un catchbloc.

Lorsqu'une exception se produit, elle est interceptée par le catchbloc. Le catchbloc ne peut pas être utilisé sans le trybloc.

Exemple: gestion des exceptions à l'aide de try… catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Production

 ArithmeticException => / par zéro

Dans l'exemple, nous essayons de diviser un nombre par 0. Ici, ce code génère une exception.

Pour gérer l'exception, nous avons mis le code, 5 / 0à l'intérieur du trybloc. Désormais, lorsqu'une exception se produit, le reste du code à l'intérieur du trybloc est ignoré.

Le catchbloc intercepte l'exception et les instructions à l'intérieur du bloc catch sont exécutées.

Si aucune des instructions du trybloc ne génère d'exception, le catchbloc est ignoré.

2. Java enfin bloquer

En Java, le finallybloc est toujours exécuté, qu'il y ait ou non une exception.

Le finallybloc est facultatif. Et, pour chaque trybloc, il ne peut y avoir qu'un seul finallybloc.

La syntaxe de base de finallyblock est:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Si une exception se produit, le finallybloc est exécuté après le try… catchbloc. Sinon, il est exécuté après le bloc try. Pour chaque trybloc, il ne peut y avoir qu'un seul finallybloc.

Exemple: gestion des exceptions Java avec le bloc finally

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Production

 ArithmeticException => / par zéro C'est le bloc finally

Dans l'exemple ci-dessus, nous divisons un nombre par 0 à l'intérieur du trybloc. Ici, ce code génère un fichier ArithmeticException.

L'exception est interceptée par le catchbloc. Et puis le finallybloc est exécuté.

Remarque : il est recommandé d'utiliser le finallybloc. C'est parce qu'il peut inclure des codes de nettoyage importants comme,

  • code qui pourrait être ignoré accidentellement par retour, poursuite ou interruption
  • fermeture d'un fichier ou d'une connexion

3. Java throw and throws mot-clé

Le throwmot clé Java est utilisé pour lever explicitement une seule exception.

Lorsqu'on fait throwune exception, le flux du programme passe du trybloc au catchbloc.

Exemple: gestion des exceptions à l'aide de Java throw

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Production

 Exception dans le thread "main" java.lang.ArithmeticException: tentative de division par 0 à Main.divideByZero (Main.java:5) à Main.main (Main.java:9)

Dans l'exemple ci-dessus, nous lançons explicitement l' ArithmeticExceptionutilisation du throwmot - clé.

De même, le throwsmot-clé est utilisé pour déclarer le type d'exceptions qui peuvent se produire dans la méthode. Il est utilisé dans la déclaration de méthode.

Exemple: Java throws mot-clé

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Production

 java.io.FileNotFoundException: test.txt (Le système ne trouve pas le fichier spécifié)

Lorsque nous exécutons ce programme, si le fichier test.txt n'existe pas, FileInputStreamlance un FileNotFoundExceptionqui étend la IOExceptionclasse.

La findFile()méthode spécifie qu'un IOExceptionpeut être levé. La main()méthode appelle cette méthode et gère l'exception si elle est levée.

Si une méthode ne gère pas les exceptions, le type d'exceptions qui peuvent y apparaître doit être spécifié dans la throwsclause.

Pour en savoir plus, consultez la page Lancer et lancer Java.

Articles intéressants...