Java 8 - Les Exceptions
Java 8 - Les Exceptions
Java 8 - Les Exceptions
LES
EXCEPTIONS
La gestion des erreurs, vue de Java…
Contenu
1. Introduction - Généralités
2. Capture des exceptions - le bloc try catch
3. Déclenchement des exceptions – throws – throw
4. Les exceptions contrôlées
5. Les exceptions non contrôlées
6. Le mécanisme « try-with-resources »
7. Les exceptions personnalisées
8. Applications
– Dépassement de mémoire,
■ Classe : java.lang.Exception
1. Détection de l’erreur
■ Création / Instanciation d’un traitant d’erreur approprié pour la
prise en charge.
■ D’où la nécessité d’un dispositif de capture d’erreur :
■ le bloc try { } catch ( ) …
2. Traitement de l’erreur
■ Consiste à effectuer une action spéciale pour permettre au
programme de poursuivre son traitement comme s’il n’y avait pas
eu de problème.
LES EXCEPTIONS
Le bloc try { } catch () …
■ Quand une erreur survient lors de l’exécution d’un programme Java,
la JVM crée automatiquement un objet de type Exception qui
représente l’erreur et son diagnostic.
■ où
– ClasseException est la classe de l’objet exception
déclenchée suite à l’erreur et
– MessageException son message associé
LES EXCEPTIONS
Le bloc try { } catch () …
■ Il faut intercepter l’exception qu’une méthode déclenche et la traiter
avec une instruction try { } catch () respectant la syntaxe
suivante :
try {
/* InstructionsTry */
} catch (ClasseException e) {
/* InstructionsCatch */
}
LES EXCEPTIONS
Le bloc try { } catch () …
Essayer … try {
d’exécuter InstructionsTry /* InstructionsTry */
Et si une exception de la Classe } catch ( ClasseException e) {
ClasseException a été déclenchée lors
de l’exécution de InstructionsTry,
InstructionsCatch est exécuté. /* InstructionsCatch */
}
Quand une exception est déclenchée par une instruction du bloc try, la JVM recherche le bloc
catch de même classe que celle de l’exception. Si ce bloc existe :
Les instructions suivant l’instruction try catch sont exécutées en oubliant celles qui suivent
l’instruction qui a provoqué l’exception dans le bloc try.
LES EXCEPTIONS
Le bloc try { } catch () …
■ Exemple (code source) :
package exception;
import esmt.formation.java.io.Clavier ;
package exception;
import esmt.formation.java.io.Clavier ;
try {
// Code suspect ...
// Susceptible de générer des exceptions ...
try {
System.out.println ( "Acces à l'élément d'indice 3 "
+ "du tableau : " + myArray[3] ) ;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println ( "Crash du programme : " + e );
} finally {
System.out.println ( "Bloc finally exécuté systématiquement"
+ " (erreur ou pas)!" ) ;
}
}
}
LES EXCEPTIONS
Le bloc finally
Démo – runtime – une erreur s’est produite – elle a été capturée et traitée – le bloc
finally est exécuté.
Démo – runtime – aucune erreur ne s’est produite - le bloc finally est toujours exécuté.
DÉCLENCHER
UNE EXCEPTION
Les clauses throw et throws
LES EXCEPTIONS
déclencher les exceptions : throw
■ L’instruction throw suivie d’une instance d’une classe d’exception permet
de déclencher une exception.
■ S’il n’existe aucune instruction try catch à même de traiter cette classe
d’exception, la JVM arrête la tâche courante et affiche dans la fenêtre de
commandes le diagnostic de l’exception.
LES EXCEPTIONS
déclencher les exceptions : throw
package exception;
Exemple d’une méthode qui vérifie l’éligilité
d’un individu.
import esmt.formation.java.io.Clavier;
Déclenche une exception si l’argument
n’est pas valide.
public class ThrowExemple {
try {
validate ( age ) ;
} catch ( IllegalArgumentException e ) {
System.err.println ( "an error occurred : " + e.getMessage() );
}
Object
Throwable Error
Exception
■ Par exemple :
– L’utilisation de la classe FileReader dans un programme pour lire les
données d'un fichier déclenche une exception de la classe
FileNotFoundException quand le fichier spécifié dans son constructeur
n'existe pas.
– Le compilateur invite donc le programmeur à gérer cette exception.
LES EXCEPTIONS
contrôlées (checked)
■ Le compilateur n’oblige pas à traiter toutes les instructions dans des try
catch en prévision de toutes les exceptions qui pourraient être
déclenchées ; ça serait fastidieux.
■ En règle générale, lorsque nous utilisons des ressources telles que des flux, des
connexions, etc., nous devons les fermer explicitement à l'aide du bloc finally.
■ Dans le programme suivant, nous lisons les données d’un fichier à l’aide de FileReader
et nous les fermons à l’aide du bloc finally.
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
❖ Pour utiliser une classe avec une instruction try-with-resources, elle doit
implémenter l'interface AutoCloseable et sa méthode close () est
invoquée automatiquement au moment de l'exécution.
❖ Les classes sont fermées dans l'ordre inverse de leur déclaration dans le bloc
try de l'instruction try-with-resources.
❖ La ressource déclarée dans try est instanciée juste avant le début du bloc try.
LES EXCEPTIONS
personnalisées
Créer sa propre classe d’exception
■ Si aucune classe d’exception de la bibliothèque standard ne correspond aux exceptions
que vous voulez déclencher dans une méthode, il est possible de créer une nouvelle
classe d’exception.
■ Celle-ci doit dériver …
– Soit de la classe java.lang.Exception pour créer une classe d’exception
contrôlée ;
❖ Une exception contrôlée est déclenchée par une méthode dont le bon
fonctionnement dépend d’une saisie correcte de l’utilisateur, ou qui peut créer des
dysfonctionnements comme pour les entrées/sorties.
❖ Une exception non contrôlée est déclenchée par une méthode en réponse à la
programmation d’un appel dans une situation incorrecte (mauvais paramètre, état
incohérent, …)
LES EXCEPTIONS
personnalisées
Créer sa propre classe d’exception
■ Syntaxe
– Presque toutes les classes d’exceptions de la bibliothèque standard sont définies
de la façon suivante :
23/05/2022
Les Exceptions
personnalisées
23/05/2022
FIN
Next : Les interfaces graphiques et la gestion
des événements avec l’API SWING