2. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Plan
1. Les concepts de base
2. Les mots clés try, catch et finally
3. Hiérarchie des classes d’exceptions Java
4. Les exceptions personnalisées
5. Lancer une exception avec throw et
throws
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 2
3. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions
LES CONCEPTS DE BASE
3
4. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions en Java ->
Concepts de base
Une exception : une erreur qui se produit lors de
l’exécution d’un programme (division par zéro)
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 4
5. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• il n’est pas très convivial qu’une erreur conduise à
l’interruption d’un programme en plein milieu d’exécution
• Java propose une façon de les gérer en évitant l’arrêt du
programme (la capture des exceptions) :
1. repérer d’abord les parties du code qui pourraient les provoquer
2. utiliser ensuite les mots clés try, catch et finally pour afficher
un message personnalisé empêchant ainsi l’arrêt "sauvage" du
programme
La gestion des exceptions en Java ->
Concepts de base
5
6. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions
LES MOTS CLÉS TRY, CATCH ET FINALLY
6
7. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Repérons d’abord dans notre code la partie susceptible de lever une
exception
La gestion des exceptions en Java ->
Les mots clés try, catch et finally
risque division par zéro,
exception possible
Un exemple
d’exécution
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 7
8. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
ensuite entourons la d’un bloc try, catch
La gestion des exceptions en Java ->
Les mots clés try, catch et finally
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
Un exemple
d’exécution
8
9. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
try {
/* ... */
}
catch (Exception ex) {
/* ... */
}
finally {
/* ... */
}
• try { /* ... */}
bloc dans lequel les exceptions sont susceptibles d'être levées.
• catch (Exception ex) { /* ... */}
bloc dans lequel l’exception est gérée
• finally { /* ... */}
bloc contenant des instructions qui seront toujours exécutées, qu’une exception
soit levée ou pas
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 9
La gestion des exceptions en Java ->
Les mots clés try, catch et finally
10. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions
HIÉRARCHIE DES CLASSES D’EXCEPTIONS JAVA
10
11. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
hiérarchie des classes d’exceptions java
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions en Java ->
Hiérarchie des classes d’exceptions Java
11
12. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• possibilité d’avoir plusieurs bloc catch pour
un/plusieurs blocs try
• les blocs catch doivent être ordonnés de
l’exception la plus spécifique à la plus générale
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions en Java ->
Hiérarchie des classes d’exceptions Java
12
13. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
L’exception ArithmeticException est plus précise dans ce cas
Exception
ArithmeticException
…
Un exemple
d’exécution
La gestion des exceptions en Java ->
Hiérarchie des classes d’exceptions Java
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 13
14. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions
LES EXCEPTIONS PERSONNALISÉES
14
15. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• possibilité de créer sa propre classe de gestion d’exception
• faisons en sorte que le nombre de sucres dans un café ne puisse être un
nombre négatif
• d’abord, définissons notre propre classe d’exception NbSucresException
La gestion des exceptions en Java ->
Les exceptions personnalisées
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 15
16. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• puis, entourons la partie qui peut générer NbSucresException par
try, catch
• enfin, modifions le constructeur correspondant de Cafe de la sorte :
La gestion des exceptions en Java ->
Les exceptions personnalisées
Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse 16
17. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcissePapa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• Nous pouvons exécuter notre programme pour remarquer le résultat
La gestion des exceptions en Java ->
Les exceptions personnalisées
17
18. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
La gestion des exceptions
LANCER UNE EXCEPTION AVEC THROWS ET THROW
18
19. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• throws permet d’indiquer qu’une méthode est susceptible de lancer une
exception
• il est ajouté à l’entête de la méthode concernée suivie du nom de l’exception
• lorsqu’il est ajouté à l’entête d’une méthode, le compilateur exigera que
l’appel à cette méthode soit entouré d’un bloc try, catch
19
La gestion des exceptions en Java ->
Lancer une exception avec throws et throw
20. Papa Cheikh CISSE, http://pacheikh.wordpress.com, @pacheikhcisse
• throw permet de déclencher l’exception en instanciant la classe de cette
exception
• il se trouve dans la méthode susceptible de lancer l’exception et vient
d’habitude après un test
• dans notre cas, il permet de lancer l’exception NbSucresException
lorsque nbSucres < 0
20
La gestion des exceptions en Java ->
Lancer une exception avec throws et throw
Notes de l'éditeur
Type d’erreur specifique au programme
Entourer partry et catch ne suffit pas car java ne peut pas savoir qu’un cafe doit avoir un nbre de sucres >= 0