0% ont trouvé ce document utile (0 vote)
2 vues2 pages

Gestion des exceptions en Java

Transféré par

Mouhamadou DEME
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues2 pages

Gestion des exceptions en Java

Transféré par

Mouhamadou DEME
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

 Lorsqu'on exécute "java TraceException 10 2", la méthode

"methode2" est appelée avec l'argument "2", qui est passé à la


méthode "methode1". La condition "if (y == 0)" est fausse et la
division x/y est effectuée sans problème. Finalement, la valeur de x
est affichée dans le main.
 Lorsqu'on exécute "java TraceException 10 -2", la méthode
"methode2" est appelée avec l'argument "-2", qui est passé à la
méthode "methode1". La condition "if (x * y < 0)" est vraie et une
exception de type E2 est lancée. Cette exception est attrapée dans
la méthode "methode2" et son message est affiché. Finalement, la
valeur de x est affichée dans le main.
 Lorsqu'on exécute "java TraceException 10 0", la méthode
"methode2" est appelée avec l'argument "0", qui est passé à la
méthode "methode1". La condition "if (y == 0)" est vraie et une
exception de type E1 est lancée. Cette exception est attrapée dans
la méthode "methode2" et son message est affiché. Finalement, la
valeur de x n'est pas affichée car la méthode "methode1" n'a pas
été entièrement exécutée à cause de l'exception.

b. Si on enlève l'instruction "throws E1" de la définition de la


méthode "methode2", le compilateur ne permettra pas de lancer
une exception de type E1 dans la méthode "methode2". Si une
exception de ce type est lancée dans la méthode "methode1", elle
ne pourra pas être attrapée dans la méthode "methode2" et
provoquera l'arrêt brutal de l'exécution. Pour régler ce problème, on
peut soit :

 Ajouter une instruction try-catch pour attraper l'exception de type


E1 dans la méthode "methode1" et la transformer en une exception
de type E2 (ou toute autre sous-classe de Exception qui est
autorisée dans la méthode "methode2").
 Modifier la définition de la méthode "methode2" pour qu'elle lance
une exception de type E2 (ou toute autre sous-classe de Exception
qui est autorisée dans la méthode "methode2") si une exception de
type E1 est attrapée dans la méthode "methode1".

c. Si on essaie de capturer les trois types d'exceptions pouvant être


lancées par un bloc, le compilateur générera une erreur car les blocs
catch doivent être triés en ordre descendant de spécificité (c'est-à-
dire que le bloc catch pour une sous-classe doit venir avant celui
pour une superclasse). Dans le code donné, le bloc catch pour
Exception attrapera toutes les exceptions, y compris celles de type
E1 et E2, et donc les blocs catch pour E1 et E2 ne seront jamais
exécutés. Pour régler ce problème, on peut soit :

 Placer le bloc catch pour Exception à la fin des blocs catch pour E1
et E2, afin qu'il attrape seulement les exceptions qui ne sont pas
déjà traitées par les autres blocs catch.
 Supprimer le bloc catch pour Exception, car il est inutile puisque E1
et E2 sont des sous

Vous aimerez peut-être aussi