Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com Structures de contrôle Gestion des exceptions Licence Creative Commons Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
Plan Interception Déclencher une exception Traitement final et multi-catch Catégories d'exceptions Exceptions non contrôlées Sous-classes de RuntimeException Exceptions contrôlées Classes d'exceptions contrôlées Exception personnalisée
Interception try { //code susceptible de lever une exception } catch (Exception e1) { //instruction } Eclipse : sélection > Surround With (Shift+Alt+Z) > Try/catch Block
Déclencher une exception throw new Exception (); Exemple : if (n < this.min n > this.max) throw new IllegalArgumentException (n + "invalide"); Eclipse : sélection > Surround With (Shift+Alt+Z) > Try/catch Block
Traitement final et multi-catch try { //code susceptible de lever une exception... } catch (NumberFormatException e1) { //instruction... } catch (IllegalArgumentException e1) { //instruction... } finally //instruction finale... }
Catégories d'exceptions Exceptions : contrôlées non contrôlées
Exceptions non contrôlées prévu (try/catch) ou affichage du diagnostique par la JVM aucune obligation d'interception (compilateur) les écrire systématiquement serait fastidieux et inutile Toutes les sous-classes de : java.lang.error java.lang.runtimeexception
Sous-classes de RuntimeException ArithmeticException ClassCastException IllegalArgumentException Division entière par Zéro Conversion d'une référence dans un type incompatible Valeur refusée en paramètre d'une méthode NumberFormatException IllegalStateException IndexOutOfBoundsException Contenu d'une chaine de caractère incompatible avec l'appel à la méthode parse... du wrapper. Etat d'un objet n'autorisant pas l'appel d'une méthode Valeur d'indice en dehors des limites autorisées NullPointerException Appel d'une méthode ou utilisation d'un champs avec une référence null
Exceptions contrôlées dérivées de java.lang.exception et différentes de java.lang.runtimeexception et ses sous-classes Soit interceptée par un try/catch propagée dans la pile d'execution ajout de la clause throws à la méthode public void fonction () throws IOException { }
Classes d'exceptions contrôlées Le plus souvent déclenchées par des méthodes d'e/s java.io.exception : fichier / réseau java.sql.sqlexception : SGBD javax.servlet.servletexception : Servlets Nous sommes contraints (par le compilateur) à tenir compte systématiquement de ces exceptions
Exception personnalisée Doit dériver (directement ou indirectement) : soit de java.lang.exception exception contrôlée méthode dont le bon fonctionnement dépend d'une saisie utilisateur - ou dont le dysfonctionnement est indépendant de la JVM (ex : E/S) soit de java.lang.runtimeexception exception non contrôlée en réponse à la programmation d'un appel dans une situation incorrecte
Ce qu on a couvert Comment gérer les exceptions Java Interception déclenchement Les catégories d'exception contrôlées et non contrôlées Comment créer des exceptions personnalisées FIN
Licence Ce(tte) œuvre (y compris ses illustrations, sauf mention explicite) est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou écrivez à : Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. Vous êtes libre de : partager reproduire, distribuer et communiquer cette œuvre remixer adapter l œuvre Selon les conditions suivantes : Attribution Vous devez clairement indiquer que ce document, ou tout document dérivé de celui, est (issu de) l œuvre originale de Noël Macé (noelmace.com) (sans suggérer qu'il vous approuve, vous ou votre utilisation de l œuvre, à moins d'en demander expressément la permission). Pas d Utilisation Commerciale Vous n avez pas le droit d utiliser cette œuvre à des fins commerciales (ie. l'intention première ou l'objectif d'obtenir un avantage commercial ou une compensation financière privée). Pour obtenir ce droit, une autorisation explicite de l'auteur est requise. Partage dans les Mêmes Conditions Si vous modifiez, transformez ou adaptez cette œuvre, vous n avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci. Pour toute demande de collaboration, d'utilisation commerciale ou de publication de ce support ou d'un dérivé de celui-ci sous une licence incompatible, contacter l'auteur via les contacts indiqués sur le site http://www.noelmace.com. Vous êtes par ailleurs vivement encouragé (sans obligation légale) à communiquer avec celui-ci si vous réalisez une œuvre dérivée ou toute amélioration de ce support.