Les exceptions personnalisées en Java
Dans ce tutoriel, nous allons découvrir comment créer une exception personnalisée en Java. Nous expliquerons comment les exceptions définies par l’utilisateur sont implémentées et utilisées pour les exceptions contrôlées et non contrôlées( parfois on dit exceptions vérifiées et non vérifiées).
En Java, il existe deux types d’exceptions: les exceptions contrôlées et les exceptions non contrôlées.
- Les exceptions contrôlées –
- Héritent de
java.lang.Exception
, - pour une condition récupérable, telles que les erreurs de compilation,
- déclaration explicite de try-catch.
- Héritent de
- Les exceptions non contrôlées –
- Héritent de
java.lang.RuntimeException
, - pour les conditions irrécupérables, telles que les erreurs de programmation, erreur d’exécution,
- aucune try-catch n’est explicite.
- Héritent de
Exception contrôlées
Une exception contrôlées est un type d’exception qui doit être interceptée ou déclarée dans la méthode dans laquelle elle est générée. Par exemple, l’exception java.io.IOException est une exception contrôlées. Pour créer ce type d’exception, hériter la classe java.lang.Exception
//Définition de l'exception class AgeInvalidException extends Exception{ AgeInvalidException(String s){ super(s); } } //Classe qui utilise notre exception définie public class TestCustomException{ static void check(int age) throws AgeInvalidException{ if(age < 20) throw new AgeInvalidException("Pas valide"); else System.out.println("Valide"); } public static void main(String args[]){ try{ check(15); }catch(Exception ex){ System.out.println("Une exception s'est produite: "+ex); } System.out.println("..."); } }
La sortie:
Une exception s'est produite: AgeInvalidException: Pas valide ...
Exemple d’exceptions contrôlées les plus utilisés : FileNotFoundException, IOException
Exception non contrôlées
Les exception non contrôlées sont les exceptions qui ne sont pas contrôlée au moment de la compilation. En C++, toutes les exceptions sont des exceptions non contrôlées, le compilateur n’oblige donc pas à gérer ni à spécifier l’exception. Dans Java, les exceptions sous les classes « Error » et « RuntimeException » sont des exceptions non contrôlées, tout le reste sous la classe « Throwable » est contrôlée. Pour créer une exception non contrôlée, hériter la classe java.lang.RuntimeException
import java.util.*; //Définition de l'exception class LargeListException extends RuntimeException{ public LargeListException(String message) { super(message); } } //Classe qui utilise notre exception définie public class Stock { public void check(List<String> products) { if (products.size() > 10) { throw new LargeListException("La liste ne peut dépasser 10 produits!"); } //... } public static void main(String[] args) { Stock stock = new Stock(); List<String> products = new ArrayList<>(); for(int i = 0; i < 20; i++){ products.add("Product"+i); } stock.check(products); } }
La sortie:
Exception in thread "main" LargeListException: La liste ne peut dépasser 10 produits! at Stock.check(Stock.java:16) at Stock.main(Stock.java:33) Command exited with non-zero status 1
Exemple d’exceptions non contrôlées les plus utilisés : IllegalArgumentException, NullPointerException
i really appreciate this website !