« Programmation Java/Exceptions » : différence entre les versions

Contenu supprimé Contenu ajouté
Classes et sous-classes d'exception , Relancer une exception , Catégorie d'objet lancé
Tavernierbot (discussion | contributions)
m Bot: Retouches cosmétiques
Ligne 8 :
En Java, une exception est représentée par une classe. Toutes les exceptions dérivent de la classe ''Exception'' qui dérive de la classe ''Throwable''.
 
== Levée d'exception ==
 
Une exception est levée grâce à l'instruction ''throw'' :
Ligne 28 :
* <code>ArithmeticException</code> quand une division par zéro a lieu.
 
== Traitement d'exception ==
 
Le traitement des exceptions se fait à l'aide de la séquence d'instructions ''try...catch...finally''.
Ligne 66 :
S'il n'y avait pas cette exception à la règle, il faudrait déclarer <code>throws ArrayIndexOutOfBoundsException</code> chaque fois qu'une méthode utilise un tableau, ou <code>throws ArithmeticException</code> chaque fois qu'une expression est utilisée, par exemple.
 
== Classes et sous-classes d'exception ==
L'héritage entre les classes d'exceptions peut conduire à des erreurs de programmation. En effet, une instance d'une sous-classe est également considérée comme une instance de la classe de base.
=== Ordre des blocs catch ===
L'ordre des blocs <code>catch</code> est important : il faut placer les sous-classes avant leur classe de base. Dans le cas contraire le compilateur gènère l'erreur <code>exception ''classe_exception'' has already been caught</code>.
 
Ligne 102 :
}
 
=== Sous-classes et clause throws ===
Une autre source de problèmes avec les sous-classes d'exception est la clause <code>throws</code>. Ce problème n'est pas détecté à la compilation.
 
Ligne 123 :
Cette méthode ne lancera jamais d'exception de type <code>FileNotFoundException</code> car cette sous-classe de <code>IOException</code> est déjà capturée.
 
== Relancer une exception ==
Relancer une exception consiste simplement à utiliser l'instruction <code>throw</code> avec l'objet exception que l'on a capturé.
 
Ligne 143 :
}
 
== Catégorie d'objet lancé ==
Le chapitre traite des exceptions, mais en fait tout objet dont la classe est ou dérive de la classe <code>Throwable</code> peut être utilisé avec les mots-clés <code>throw</code>, <code>throws</code> et <code>catch</code>.
 
=== Classes dérivées de Throwable ===
Il existe deux principales sous-classes de la classe <code>Throwable</code> :
* <code>Exception</code> signale une erreur dans l'application,
* <code>Error</code> signale une erreur plus grave, souvent au niveau de la machine virtuelle (manque de ressource, mauvais format de classe, ...).
 
=== Créer une classe d'exception ===
Il est également possible d'étendre une classe d'exception pour spécialiser un type d'erreur, ajouter une information dans l'objet exception, ...