14. Les Exceptions

Une exception survient lors d'un cas de figure anormal. Elle interrompt le flot normal d'exécution et exécute les éventuelles routines de traitement. Par exemple, s'il on essaye d'ouvrir en lecture un fichier qui n'existe pas, une exception IOException sera générée.

En Java, il existe une classe Exception. Si l'on désire créer un nouveau "type" d'exception, il suffit d'étendre la classe, comme présenté ci-dessous :

class divisionParZeroException extends Exception {
}
Remarquons que Exception et Error sont des sous-classes de Throwable. Les objets de la classe Error sont des erreurs internes à la machine virtuelle Java, c'est pourquoi il faut être très vigilant si l'on désire les récupérer. En effet, il ne serait pas très judicieux d'ignorer une exception de type "Plus de mémoire".

Si dans un bloc (une méthode), on fait appel à une méthode qui peut potentiellement générer une exception, on doit soit essayer de la récupérer avec try, soit ajouter le mot clé throws dans la déclaration du bloc. Si on ne le fait pas, il en résultera une erreur à la compilation. Il n'est toutefois pas requis de traiter les exceptions et erreurs déclarées dans le paquetage java.lang, car celles-ci peuvent se déclencher partout.

Pour générer une exception, il suffit d'utiliser throw, suivi d'un objet dont la classe est dérivée de Throwable. Si l'on veut générer une exception dans une méthode, avec throw, il faudra l'indiquer dans la déclaration de méthode, en utilisant le mot clé throws.

throw new Exception();
throw new IOException("fichier ABSENT.TXT non trouve");

throw e;    // si on ne fait que propager l'exception e

Un exemple complet de l'utilisation des exceptions est donné à la page décrivant la clause try.

Attention !

Attention à l'orthographe, lorsque l'on indique qu'une méthode peut générer une exception, dans la déclaration de la méthode, on utilise le mot clé throws, qui prend un s. Lorsque l'on génére l'exception, on utilise throw, qui ne prend pas de s.
Index général - Index concepts - Règles BNF
© 1996, DIP Genève, Alexandre Maret & Jacques Guyot
page générée Fri Jun 21 15:41:20 MET DST 1996