Contenu du cours
Bibliothèque Java JUnit. Types de Tests
Bibliothèque Java JUnit. Types de Tests
Structure Try-Catch
Comment gérer les exceptions
Du chapitre précédent, vous avez peut-être compris que les exceptions arrêtent complètement l'exécution du programme. Un tel résultat n'est pas souhaitable pour nous car nous avons besoin que le programme continue de fonctionner sans planter.
Supprimer simplement les exceptions n'est pas une option, car dans ce cas, le programme fonctionnerait incorrectement. Par conséquent, nous devons apprendre à gérer les erreurs en utilisant la structure try-catch
.
Jetons un coup d'œil à la syntaxe d'une telle structure et comprenons comment elle capture les erreurs :
-
Bloc
try
: Ce bloc contient le code qui pourrait générer une exception. Pendant l'exécution, si une instruction à l'intérieur du bloctry
lance une exception, le reste du code du bloc est ignoré, et le contrôle passe au(x) bloc(s)catch
correspondant(s) pour gérer cette exception ; -
Bloc
catch
: Ce bloc est utilisé pour gérer l'exception. Il doit suivre le bloctry
. Si le type d'exception lancé correspond au type déclaré dans le bloccatch
, le code à l'intérieur de ce bloc est exécuté. Il peut y avoir plusieurs blocs catch associés à un seul bloctry
, chacun capturant et gérant différents types d'exceptions.
En termes plus simples, nous tentons d'exécuter le code, en nous préparant à attraper une exception.
Si nous attrapons une exception, l'exécution du code ne s'arrête pas mais continue avec l'opération spécifiée dans le bloc catch
. S'il n'y a pas d'exception, l'opération est exécutée avec succès sans entrer dans le bloc catch
.
Gestion de ArithmeticException
Dans le chapitre précédent, nous avons implémenté une méthode de division qui lance une exception arithmétique en cas de division par zéro. Voici à quoi ressemble cette méthode :
Maintenant, gérons cette exception lors de l'appel de la méthode en utilisant une structure try-catch :
main
package com.example; public class Main { public static double divide(int numerator, int denominator) throws ArithmeticException { if (denominator == 0) { throw new ArithmeticException("Division by zero is not allowed."); } return (double) numerator / denominator; } public static void main(String[] args) { try { double result = divide(10, 0); System.out.println(result); } catch (ArithmeticException e) { System.out.println("You can't divide by zero!"); } System.out.println("The program is continues its execution"); } }
Comme vous pouvez le voir, nous tentons de effectuer une division par zéro, mais nous le faisons dans le bloc try
. Dans le bloc catch
, nous attrapons l'ArithmeticException
et lui donnons un alias "e
" afin que nous puissions utiliser cet objet à l'avenir (rappelez-vous, les exceptions sont des objets, n'est-ce pas ?).
De cette façon, l'exception n'interrompt pas l'exécution du programme puisque nous l'avons gérée. Maintenant, en cas de lancement d'une exception, le programme notifie l'utilisateur avec une sortie console et continue son exécution.
1. Quel est le but du bloc try
dans une structure try-catch ?
2. Que se passe-t-il si une exception est lancée à l'intérieur d'un bloc try
?
3. Que fait le bloc catch
dans une structure try-catch ?
4. Quel est le résultat de la gestion d'une exception avec une structure try-catch
?
Merci pour vos commentaires !