Comment créer des exceptions personnalisées en Java

Vous pouvez créer des exceptions personnalisées en Java. En tant que programmeur, vous avez probablement une bonne prise sur des exceptions, mais ici, vous pourrez utiliser l'héritage pour créer des exceptions de votre propre.

Sommaire

Tracing la hiérarchie Throwable

Vous utilisez l'instruction try / catch pour intercepter des exceptions et la jeter déclaration à lever des exceptions. Chaque type d'exception qui peuvent être capturés ou jetés est représentée par une classe d'exception différente. Qu'est-ce que vous pourriez ne pas avoir réalisé est que ces classes d'exception utilisent une chaîne d'héritage assez complexe.

image0.jpg

Les paragraphes suivants décrivent les classes dans cette hiérarchie:

  • Throwable: La racine de la hiérarchie exception est le Throwable classe. Cette classe représente un objet qui peut être jeté avec un jeter déclaration et pris avec un capture clause.

  • Erreur: Cette sous-classe de Throwable représente les conditions d'erreur graves que les programmes raisonnables ne peuvent pas récupérer. Les sous-classes de cette classe représentent les types spécifiques d'erreurs qui peuvent se produire. Si la machine virtuelle Java à court de mémoire, par exemple, un VirtualMachineError est jeté. Vous ne devez pas vous inquiéter à propos de la capture de ces erreurs dans vos programmes.

  • Exception: Cette sous-classe de Throwable représente une condition d'erreur que la plupart des programmes devraient essayer de récupérer. Ainsi, Exception est effectivement le sommet de la hiérarchie pour les types d'exceptions que vous attraper avec try / catch déclarations.




    À l'exception (désolé) de RuntimeException, les sous-classes de Exception représenter des types spécifiques d'exceptions vérifiés qui doivent être capturés ou jetés. On notera que certains de ces sous-classes ont des sous-classes de la leur. La classe d'exception nommé IOException, par exemple, a plus de 25 sous-classes représentant différents types d'exceptions d'E / S qui peuvent se produire.

  • RuntimeException: Cette sous-classe de Exception représente exceptions non vérifiées. Vous ne disposez pas d'attraper ou de lancer des exceptions non vérifiées, mais vous pouvez si vous voulez. Les sous-classes de RuntimeException comprendre NullPointerException et ArithmeticException.

Si votre application a besoin de jeter une exception personnalisée, vous pouvez créer une classe d'exception qui hérite une des classes dans cette hiérarchie. Habituellement, cependant, vous commencez avec le Exception classe pour créer une exception vérifiée personnalisé.

Création d'une classe d'exception

Pour créer une classe d'exception personnalisée, il vous suffit de définir une classe qui étend une des classes dans la hiérarchie d'exception Java. Habituellement, vous étendez Exception pour créer une exception vérifiée personnalisé.

Supposons que vous développez une classe qui récupère des données de produits à partir d'un fichier ou base de données, et vous voulez des méthodes qui rencontrent des erreurs E / S de jeter une exception personnalisée plutôt que le générique IOException qui est fourni dans l'API Java. Vous pouvez le faire en créant une classe qui étend la Exception classe:

ProductDataException public class extends Exception {}

Malheureusement, les constructeurs ne sont pas considérés comme des membres de la classe, de sorte qu'ils ne sont pas héritées lorsque vous étendez une classe. En conséquence, la ProductDataException a seulement un constructeur par défaut. La Exception classe elle-même et la plupart des autres classes d'exception ont un constructeur qui vous permet de passer un message de chaîne qui est stocké à l'exception et peut être récupéré via le getMessage Procédé.

Ainsi vous souhaitez ajouter ce constructeur pour votre classe, ce qui signifie que vous souhaitez ajouter un constructeur par défaut explicite trop. Alors maintenant, la ProductDataException classe ressemble à ceci:

ProductDataException public class extends Exception {} {ProductDataException publique ProductDataException public (String message) {super (message) -}}

Bien qu'il soit possible de le faire, ajouter des champs ou des méthodes à une classe d'exception personnalisée est inhabituel.

Lancer une exception personnalisée

Comme pour toute exception, vous utilisez un jeter déclaration à lancer une exception personnalisée. Vous codez habituellement ce jeter déclaration dans le milieu d'une capture la clause qui attire un autre, plus générique exception. Voici une méthode qui récupère des données de produits à partir d'un fichier et jette un ProductDataException si un IOException se produit:

public class ProductDDB {public static getProduct produit (code String) jette ProductDataException {try {produit p - // code qui obtient le produit à partir d'un fichier // et pourrait lancer une IOExceptionp = new produit () - retour p} catch (IOException e) {throw new ProductDataException ("Une erreur est survenue IO.") -}}}

Voici un code qui appelle la getProduct méthode et intercepte l'exception:

try {Produit p = ProductDB.getProduct (productCode) -} catch (ProductDataException e) {System.out.println (e.getMessage ()) -}

Voici le message est tout simplement affiché sur la console si une ProductDataException est jeté. Dans un programme réel, vous voulez enregistrer l'erreur, informer l'utilisateur, et de comprendre comment le programme doit continuer gracieusement même si cette exception de données a eu lieu.


» » » » Comment créer des exceptions personnalisées en Java