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… catch
block:
try ( // code ) catch(Exception e) ( // code )
Ici, nous avons placé le code qui pourrait générer une exception à l'intérieur du try
bloc. Chaque try
bloc est suivi d'un catch
bloc.
Lorsqu'une exception se produit, elle est interceptée par le catch
bloc. Le catch
bloc ne peut pas être utilisé sans le try
bloc.
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 try
bloc. Désormais, lorsqu'une exception se produit, le reste du code à l'intérieur du try
bloc est ignoré.
Le catch
bloc intercepte l'exception et les instructions à l'intérieur du bloc catch sont exécutées.
Si aucune des instructions du try
bloc ne génère d'exception, le catch
bloc est ignoré.
2. Java enfin bloquer
En Java, le finally
bloc est toujours exécuté, qu'il y ait ou non une exception.
Le finally
bloc est facultatif. Et, pour chaque try
bloc, il ne peut y avoir qu'un seul finally
bloc.
La syntaxe de base de finally
block est:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Si une exception se produit, le finally
bloc est exécuté après le try… catch
bloc. Sinon, il est exécuté après le bloc try. Pour chaque try
bloc, il ne peut y avoir qu'un seul finally
bloc.
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 try
bloc. Ici, ce code génère un fichier ArithmeticException
.
L'exception est interceptée par le catch
bloc. Et puis le finally
bloc est exécuté.
Remarque : il est recommandé d'utiliser le finally
bloc. 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 throw
mot clé Java est utilisé pour lever explicitement une seule exception.
Lorsqu'on fait throw
une exception, le flux du programme passe du try
bloc au catch
bloc.
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' ArithmeticException
utilisation du throw
mot - clé.
De même, le throws
mot-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, FileInputStream
lance un FileNotFoundException
qui étend la IOException
classe.
La findFile()
méthode spécifie qu'un IOException
peut ê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 throws
clause.
Pour en savoir plus, consultez la page Lancer et lancer Java.