1
TP de Java
Exceptions et E/S
_____________________
Sujets abordés dans ce TP : Bloc try/catch/finally
Déclenchement d’exception
Redéfinition d’exception
Taxonomie des exceptions
Gestion de fichiers
Tokenizer
1) Les erreurs et les exceptions
Introduction
Durant l’exécution d’un programme, il peut se produire des événements anormaux (et inattendus)
comme par exemple : un utilisateur pourrait écrire un nom de fichier inadmissible, un dossier
pourrait contenir des données corrompues, etc. On peut prendre en compte des circonstances de
ce type en Java via les mécanismes d’exception. Un sous-arbre de la hiérarchie de classes, ayant
pour classe racine la classe java.lang.Throwable, y est consacré. Aider vous de la documentation
de ce package dans l’API specification afin d’analyser les différents exemples durant ce TP.
En Java, la gestion des exceptions se fait via l’emploi d’une structure de type try/catch/finally.
L’exemple suivant donne une première implémentation d’exception pour la lecture d’un fichier
texte, et le résultat commenté de l’exécution de cet exemple.
import java.io.FileInputStream;
import java.io.IOException;
public class Tp3_ex1 {
public static void main(String[] args) {
String fileName = "todo.txt";
String nString = "10";
FileInputStream fis;
try {
System.out.println("#1");
fis = new FileInputStream(fileName);
System.out.println("#2");
Integer n = new Integer(nString);
System.out.println("#3");
}
catch (IOException ioe) {
System.out.println(" E/S problem :" + ioe);
}
catch (NumberFormatException nfe) {
System.out.println(" NumberFormat problem " + nfe);
}
finally {
System.out.println("#4");
}
}
}
Si todo.txt existe et nString est un nombre entier alors la sortie de ce programme est :
#1
#2
#3
#4
Si le fichier de nom contenu dans la String fileName n’existe pas alors la sortie de ce programme
est :
#1
E/S problem :java.io.FileNotFoundException: todo.txt (Le fichier
spécifié est introuvable)
#4
Si la chaîne de caractères nString n’est pas un nombre entier alors :
#1
#2
NumberFormat problem java.lang.NumberFormatException: For input
string: "10sd"
#4
Conclusions:
- une exception produite dans le bloc «try » est manipulée par la clause
« catch » assortie
- quand une exception est produite tout le code dans le bloc d'essai après
l'endroit où l'exception a eu lieu n'est pas exécuté.
- « finally » est toujours exécuté