Les exceptions en Java
Une exception est un événement indésirable ou inattendu, qui se produit pendant l’exécution d’un programme, c’est-à-dire au moment de l’exécution, qui perturbe le flux normal des instructions du programme.
Différence entre Exception et Error
L’erreur se produit uniquement lorsque les ressources système sont insuffisantes alors qu’une exception est provoquée si un code rencontre un problème. Une erreur ne peut jamais être récupérée alors qu’une exception peut être récupérée en préparant le code pour gérer l’exception
Les exceptions sont celles qui peuvent être gérées au moment de l’exécution alors que les erreurs ne peuvent pas être gérées.
Hiérarchie des exceptions
Exception et Error sont des sous-classes de la classe Throwable, qui est la classe de base de la hiérarchie. Exception, cette classe est utilisée pour des conditions exceptionnelles que les programmes utilisateur doivent intercepter. NullPointerException est un exemple d’une telle exception. La classe Error, est utilisée par Java Virtual Machine (JVM) pour indiquer les erreurs liées à l’environnement d’exécution lui-même (JRE). StackOverflowError est un exemple d’une telle erreur.

Types d’exceptions Java
Il existe principalement deux types d’exceptions: contrôlées et non contrôlées.
Comment JVM gère une exception?
Chaque fois dans une méthode, si une exception s’est produite, la méthode crée un objet appelé Exception et le transmet au JVM. L’objet Exception contient le nom et la description de l’exception, ainsi que l’état actuel du programme où l’exception s’est produite. Il peut y avoir la liste des méthodes qui ont été appelées pour accéder à la méthode où l’exception s’est produite. Cette liste des méthodes est appelée Call Stack.
Exemple:
public class Main { public static void main(String args[]) { float res = 1/0; System.out.println(res); } }
Sortie:
Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:7)
Comment un programmeur gère une exception?
La gestion des exceptions en Java est gérée via cinq mots clés: try, catch, throw, throws, et finally.
try | Le mot clé « try » est utilisé pour spécifier un bloc où nous devons placer le code d’exception. Le bloc « try » doit être suivi par « catch » ou « finally ». Cela signifie que nous ne pouvons pas utiliser le bloc « try » seul. |
catch | Le bloc « catch » est utilisé pour gérer l’exception. Il doit être précédé par le bloc « try » ce qui signifie que nous ne pouvons pas utiliser le bloc « catch » seul. Il peut être suivi par le bloc « finally » plus tard. |
finally | Le bloc « finally » est utilisé pour exécuter le code important du programme. Il est exécuté, que ce soit l’exception est gérée ou non. |
throw | Le mot clé « throw » est utilisé pour lever une exception. |
throws | Le mot clé « throws » est utilisé pour déclarer des exceptions. Il spécifie qu’il peut se produire une exception dans une méthode. Il est toujours utilisé avec la signature de méthode. |
Comment utiliser la clause try-catch
try { // le code que vous pensez peut déclencher une exception } catch (ExceptionType1 e) { // gérer l'exception ExceptionType1 } catch (ExceptionType2 e) { // gérer l'exception ExceptionType2 } // bloc optionnel finally { // bloc de code à exécuter après la fin du bloc try }
Exemple : Gestion des exceptions en Java
Regardons un exemple comment gérer une exception en Java où nous utilisons l’instruction try-catch pour gérer l’exception.
public class Main { public static void main(String args[]) { try { //code qui peut déclencher une exception int res = 10/0; } catch(ArithmeticException e) { System.out.println(e); } //le rest du code System.out.println("le rest du code..."); } }
Sortie:
java.lang.ArithmeticException: / by zero le rest du code...
Dans l’exemple ci-dessus, 10/0 déclenche l’exception « ArithmeticException » qui est gérée par le bloc try-catch.
