Oracle Certified Professional, Java SE 7 Programmer noelmace.com
Noël Macé
Formateur et Consultant indépendant expert Unix et FOSS
http://www.noelmace.com
Gestion des exceptions
Structures de contrôle
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.
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
• Eclipse :
 sélection > Surround With (Shift+Alt+Z) > Try/catch Block
Interception
try {
//code susceptible de lever une exception
} catch (Exception e1) {
//instruction
}
try {
//code susceptible de lever une exception
} catch (Exception e1) {
//instruction
}
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
• Exemple :
• Eclipse :
 sélection > Surround With (Shift+Alt+Z) > Try/catch Block
Déclencher une exception
throw new Exception ();throw new Exception ();
if (n < this.MIN || n > this.MAX)
throw new IllegalArgumentException (n + "invalide");
if (n < this.MIN || n > this.MAX)
throw new IllegalArgumentException (n + "invalide");
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
Traitement final et multi-catch
try {
//code susceptible de lever une exception
...
} catch (NumberFormatException e1) {
//instruction
...
} catch (IllegalArgumentException e1) {
//instruction
...
} finally
//instruction finale
...
}
try {
//code susceptible de lever une exception
...
} catch (NumberFormatException e1) {
//instruction
...
} catch (IllegalArgumentException e1) {
//instruction
...
} finally
//instruction finale
...
}
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
Catégories d'exceptions
• Exceptions :
 contrôlées
 non contrôlées
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
Sous-classes de RuntimeException
ArithmeticException Division entière par Zéro
ClassCastException Conversion d'une référence dans un type
incompatible
IllegalArgumentException Valeur refusée en paramètre d'une méthode
∟ NumberFormatException Contenu d'une chaine de caractère incompatible
avec l'appel à la méthode parse... du wrapper.
IllegalStateException Etat d'un objet n'autorisant pas l'appel d'une
méthode
IndexOutOfBoundsException 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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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 {
…
}
public void fonction () throws IOException {
…
}
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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
Oracle Certified Professional, Java SE 7 Programmer noelmace.com
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.

Java - Exceptions

  • 1.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com Gestion des exceptions Structures de contrôle 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.
  • 2.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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
  • 3.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com • Eclipse :  sélection > Surround With (Shift+Alt+Z) > Try/catch Block Interception try { //code susceptible de lever une exception } catch (Exception e1) { //instruction } try { //code susceptible de lever une exception } catch (Exception e1) { //instruction }
  • 4.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com • Exemple : • Eclipse :  sélection > Surround With (Shift+Alt+Z) > Try/catch Block Déclencher une exception throw new Exception ();throw new Exception (); if (n < this.MIN || n > this.MAX) throw new IllegalArgumentException (n + "invalide"); if (n < this.MIN || n > this.MAX) throw new IllegalArgumentException (n + "invalide");
  • 5.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com Traitement final et multi-catch try { //code susceptible de lever une exception ... } catch (NumberFormatException e1) { //instruction ... } catch (IllegalArgumentException e1) { //instruction ... } finally //instruction finale ... } try { //code susceptible de lever une exception ... } catch (NumberFormatException e1) { //instruction ... } catch (IllegalArgumentException e1) { //instruction ... } finally //instruction finale ... }
  • 6.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com Catégories d'exceptions • Exceptions :  contrôlées  non contrôlées
  • 7.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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
  • 8.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com Sous-classes de RuntimeException ArithmeticException Division entière par Zéro ClassCastException Conversion d'une référence dans un type incompatible IllegalArgumentException Valeur refusée en paramètre d'une méthode ∟ NumberFormatException Contenu d'une chaine de caractère incompatible avec l'appel à la méthode parse... du wrapper. IllegalStateException Etat d'un objet n'autorisant pas l'appel d'une méthode IndexOutOfBoundsException 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
  • 9.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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 { … } public void fonction () throws IOException { … }
  • 10.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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
  • 11.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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
  • 12.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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
  • 13.
    Oracle Certified Professional,Java SE 7 Programmer noelmace.com 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.