Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Création d'Exceptions | Exceptions
Bibliothèque Java JUnit. Types de Tests
course content

Contenu du cours

Bibliothèque Java JUnit. Types de Tests

Bibliothèque Java JUnit. Types de Tests

1. Tests en Développement
2. Tests Unitaires
3. Exceptions

book
Création d'Exceptions

Il est temps de passer à créer vos propres exceptions personnalisées que vous pouvez lancer dans vos programmes. Tout d'abord, il est important de noter qu'il existe deux types d'exceptions.

Types d'Exceptions en Java

  • Exceptions Vérifiées : Ce sont des exceptions qui doivent être soit capturées soit déclarées dans la signature de la méthode. Elles sont vérifiées à la compilation.
    Exemple : IOException;

  • Exceptions Non Vérifiées : Ces exceptions ne sont pas vérifiées à la compilation. Elles indiquent généralement des erreurs de programmation, telles que des erreurs logiques ou une utilisation incorrecte de l'API.
    Exemple : NullPointerException.

Remarque

Vous avez peut-être remarqué qu'à ce stade, nous avons discuté des exceptions non vérifiées car elles affectent la logique de l'application. Dans ce chapitre, nous utiliserons également des exceptions non vérifiées, qui signifient des erreurs dans la logique d'une méthode/application.

Créer des Exceptions Personnalisées

Pour créer une exception personnalisée en Java, vous étendez généralement soit Exception ( pour les exceptions vérifiées ) soit RuntimeException ( pour les exceptions non vérifiées ).

Étapes pour Créer une Exception Personnalisée :

  1. Définir une Nouvelle Classe : Votre classe d'exception doit étendre soit Exception soit RuntimeException, selon si vous voulez qu'elle soit une exception vérifiée ou non vérifiée;
  2. Surcharge de Constructeur : Définissez des constructeurs pour votre classe d'exception. Vous pouvez créer plusieurs constructeurs pour transmettre différents types d'informations sur l'exception ( par exemple, un message simple ou une autre cause throwable ).

Exemple d'une Exception Personnalisée Vérifiée :

java

CustomCheckedException

copy
1234567
public class CustomCheckedException extends Exception { public CustomCheckedException(String message) { super(message); } // Additional constructors can be added if needed }

Exemple d'une Exception Non Vérifiée Personnalisée :

java

CustomUncheckedException

copy
1234567
public class CustomUncheckedException extends RuntimeException { public CustomUncheckedException(String message) { super(message); } // Additional constructors can be added if needed }

Pratique

Maintenant, pratiquons un peu et créons notre propre exception, qui sera utilisée lorsque l'utilisateur n'a pas l'âge requis pour acheter quelque chose dans une boutique en ligne. Cette exception devrait avoir un nom qui représente l'erreur qu'elle indique.
Par exemple, NotOfLegalAgeException ou PurchaseProhibitedException.

Remarque

Cette exception sera non vérifiée car une telle erreur viole la logique du programme.

Maintenant, nous pouvons utiliser cette exception dans notre code et la lancer dans des méthodes. Écrivons une méthode qui vérifie l'âge de l'utilisateur et lance une exception s'il est âgé de moins de 21 ans.

java

main

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
package com.example; public class Main { public static void main(String[] args) { User bob = new User("bob@bobmail.com", "Bob", "some properties..", 20); InternetShopService shopService = new InternetShopService(); shopService.order(bob, "Tequila", 21); } } class InternetShopService { public boolean checkAge(User user, int requiredAge) { return user.getAge() >= requiredAge; } public void order(User user, String item, int requiredAge) { boolean permission = checkAge(user, requiredAge); if (permission) { System.out.println("Ordered successfully!"); } else { throw new PurchaseProhibitedException( String.format("You can't buy %s till you reach %d years old", item, requiredAge)); } //database operations } // other methods } class User { private String email; private String name; private String properties; private int age; public User(String email, String name, String properties, int age) { this.email = email; this.name = name; this.properties = properties; this.age = age; } public int getAge() { return age; } } class PurchaseProhibitedException extends RuntimeException { public PurchaseProhibitedException(String message) { super(message); } }

Comme vous pouvez le voir, nous utilisons l'exception que nous avons créée dans le code. Maintenant, il ne reste plus qu'à gérer cette exception lorsque la méthode qui la lance est appelée et à imprimer le message d'exception sur la console. Nous le ferons, bien sûr, en utilisant une structure try-catch.

java

main

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
package com.example; public class Main { public static void main(String[] args) { User bob = new User("bob@bobmail.com", "Bob", "some properties..", 20); InternetShopService shopService = new InternetShopService(); try { shopService.order(bob, "Tequila", 21); } catch (PurchaseProhibitedException e) { System.out.println("Exception caught: " + e.getMessage()); } } } class InternetShopService { public boolean checkAge(User user, int requiredAge) { return user.getAge() >= requiredAge; } public void order(User user, String item, int requiredAge) { boolean permission = checkAge(user, requiredAge); if (permission) { System.out.println("Ordered successfully!"); } else { throw new PurchaseProhibitedException( String.format("You can't buy %s till you reach %d years old", item, requiredAge)); } //database operations } // other methods } class User { private String email; private String name; private String properties; private int age; public User(String email, String name, String properties, int age) { this.email = email; this.name = name; this.properties = properties; this.age = age; } public int getAge() { return age; } } class PurchaseProhibitedException extends RuntimeException { public PurchaseProhibitedException(String message) { super(message); } }

Maintenant, vous pouvez créer vos propres exceptions personnalisées et les lancer dans votre code. Excellent !

1. Quels sont les deux principaux types d'exceptions en Java ?

2. Lors de la création d'une exception vérifiée personnalisée, quelle classe doit-elle étendre ?

3. Quelle est une caractéristique clé des exceptions non vérifiées en Java ?

4. Dans l'exemple fourni, quel est le but de la classe PurchaseProhibitedException ?

5. Que fait l'appel super(message) dans le constructeur de PurchaseProhibitedException ?

Quels sont les deux principaux types d'exceptions en Java ?

Quels sont les deux principaux types d'exceptions en Java ?

Sélectionnez la réponse correcte

Lors de la création d'une exception vérifiée personnalisée, quelle classe doit-elle étendre ?

Lors de la création d'une exception vérifiée personnalisée, quelle classe doit-elle étendre ?

Sélectionnez la réponse correcte

Quelle est une caractéristique clé des exceptions non vérifiées en Java ?

Quelle est une caractéristique clé des exceptions non vérifiées en Java ?

Sélectionnez la réponse correcte

Dans l'exemple fourni, quel est le but de la classe `PurchaseProhibitedException` ?

Dans l'exemple fourni, quel est le but de la classe PurchaseProhibitedException ?

Sélectionnez la réponse correcte

Que fait l'appel `super(message)` dans le constructeur de `PurchaseProhibitedException` ?

Que fait l'appel super(message) dans le constructeur de PurchaseProhibitedException ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
We're sorry to hear that something went wrong. What happened?
some-alt