Java try ... catch (avec des exemples)

Dans ce didacticiel, nous allons découvrir l'instruction try catch en Java à l'aide d'exemples.

Le try… catchbloc en Java est utilisé pour gérer les exceptions et empêche l'arrêt anormal du programme.

Voici la syntaxe d'un try… catchbloc en Java.

 try( // code ) catch(exception) ( // code )

Le trybloc comprend le code susceptible de générer une exception.

Le catchbloc comprend le code qui est exécuté lorsqu'une exception se produit à l'intérieur du trybloc.

Exemple: Java try… catch block

 class Main ( public static void main(String() args) ( try ( 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 ci-dessus, notez la ligne,

 int divideByZero = 5 / 0;

Ici, nous essayons de diviser un nombre par zéro . Dans ce cas, une exception se produit. Par conséquent, nous avons inclus ce code à l'intérieur du trybloc.

Lorsque le programme rencontre ce code, ArithmeticExceptionse produit. Et, l'exception est interceptée par le catchbloc et exécute le code à l'intérieur du catchbloc.

Le catchbloc n'est exécuté que s'il existe une exception à l'intérieur du trybloc.

Remarque : en Java, nous pouvons utiliser un trybloc sans catchbloc. Cependant, nous ne pouvons pas utiliser un catchbloc sans trybloc.

Java essayer… enfin bloquer

Nous pouvons également utiliser le trybloc avec un bloc finally.

Dans ce cas, le bloc finally est toujours exécuté, qu'il y ait une exception à l'intérieur du bloc try ou non.

Exemple: Java try… finally block

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )

Production

 Enfin le bloc est toujours exécuté Exception dans le thread "main" java.lang.ArithmeticException: / par zéro à Main.main (Main.java:4)

Dans l'exemple ci-dessus, nous avons utilisé le trybloc avec le finallybloc. Nous pouvons voir que le code à l'intérieur du trybloc provoque une exception.

Cependant, le code à l'intérieur du finallybloc est exécuté indépendamment de l'exception.

Java essayer… attraper… enfin bloquer

En Java, nous pouvons également utiliser le bloc finally après le try… catchbloc. Par exemple,

 import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Production

 Saisie de l'instruction try Exception => Index 5 hors limites pour la longueur 5 Fermeture de PrintWriter

Dans l'exemple ci-dessus, nous avons créé un tableau nommé list et un fichier nommé output.txt. Ici, nous essayons de lire les données du tableau et de les stocker dans le fichier.

Notez le code,

 for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )

Ici, la taille du tableau est 5et le dernier élément du tableau est à list(4). Cependant, nous essayons d'accéder aux éléments à a(5) et a(6).

Par conséquent, le code génère une exception qui est interceptée par le bloc catch.

Puisque le finallybloc est toujours exécuté, nous avons inclus du code pour fermer l' PrintWriterintérieur du bloc finally.

Il est recommandé d'utiliser finally block pour inclure un code de nettoyage important comme la fermeture d'un fichier ou d'une connexion.

Remarque : dans certains cas, un finallybloc ne s'exécute pas:

  • Utilisation de la System.exit()méthode
  • Une exception se produit dans le finallybloc
  • La mort d'un fil

Plusieurs blocs Catch

Pour chaque trybloc, il peut y avoir zéro ou plusieurs catchblocs. Plusieurs catchblocs nous permettent de gérer chaque exception différemment.

Le type d'argument de chaque catchbloc indique le type d'exception qu'il peut gérer. Par exemple,

 class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Production

 IndexOutOfBoundsException => Index 10 hors limites pour la longueur 10

Dans cet exemple, nous avons créé un tableau d'entiers nommé arrde taille 10 .

Puisque l'index du tableau commence à 0 , le dernier élément du tableau est à arr(9). Notez la déclaration,

 arr(10) = 11;

Ici, nous essayons d'attribuer une valeur à l'index 10 . Par conséquent, IndexOutOfBoundExceptionse produit.

Lorsqu'une exception se produit dans le trybloc,

  • L'exception est renvoyée au premier catchbloc. Le premier catchbloc ne gère pas an IndexOutOfBoundsException, il est donc passé au catchbloc suivant .
  • Le deuxième catchbloc de l'exemple ci-dessus est le gestionnaire d'exceptions approprié car il gère un fichier IndexOutOfBoundsException. Par conséquent, il est exécuté.

Attraper plusieurs exceptions

À partir de Java SE 7 et versions ultérieures, nous pouvons désormais intercepter plus d'un type d'exception avec un catchbloc.

Cela réduit la duplication de code et augmente la simplicité et l'efficacité du code.

Chaque type d'exception qui peut être traité par le catchbloc est séparé à l'aide d'une barre verticale |.

Sa syntaxe est:

 try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )

Pour en savoir plus, visitez Java attraper plusieurs exceptions.

Instruction Java try-with-resources

L' instruction try-with-resources est une instruction try qui a une ou plusieurs déclarations de ressources.

Sa syntaxe est:

 try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )

La ressource est un objet à fermer à la fin du programme. Il doit être déclaré et initialisé dans l'instruction try.

Prenons un exemple.

 try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )

L' instruction try-with-resources est également appelée gestion automatique des ressources . Cette instruction ferme automatiquement toutes les ressources à la fin de l'instruction.

Pour en savoir plus, consultez l'instruction java try-with-resources.

Articles intéressants...