L'exemple ci-dessous a pour objectif de montrer l'effet d'un bloc finally. Ce que fait l'exemple ne présente pas d'intérêt en soi.
On appelle bloc finally la clause finally suivi d'un bloc d'instructions.
Un bloc finally est en général utilisé pour effectuer des nettoyages (fermer des fichiers, libérer des ressources...).
On doit toujours utiliser un bloc finally en association avec un bloc try.
Un bloc finally suit:
Vous pouvez essayer de deviner la sortie du programme avant de regarder ce qu'il en est et éventuellement de lire les explications.
Vous remarquerez aussi que la mention throws MonException figure dans les en-têtes de toutes méthodes susceptibles de lancer cette exception.
class MonException extends Exception {
MonException() {
System.out.println("me voila");
}
}
class Propagation {
static boolean probleme = true;
static void methodeBasse() throws MonException {
try {
if (probleme) throw new MonException();
System.out.println("et moi ?");
}
finally {
System.out.println("hauteur basse : il faudrait etre ici");
}
System.out.println("pas mieux");
}
static void methodeMoyenne() throws MonException {
try {
methodeBasse();
System.out.println("et ici ?");
}
finally {
System.out.println("moyenne hauteur : ou bien etre la");
}
}
static void methodeHaute() {
try {
methodeMoyenne();
}
catch(MonException e) {
System.out.println("attrape...");
}
}
static public void main(String[] arg) {
methodeHaute();
}
}
On obtient en sortie
me voila
hauteur basse : il faudrait etre ici
moyenne hauteur : ou bien etre la
attrape...
Pour accéder au fichier Propagation.java.
© Irène Charon Télécom ParisTech 2010