programmation Java (école d'ingénieur) · Chapitre 11 · Exercice de TD
finally et return
Exceptions · niveau 1 (application)
Énoncé
Qu'affiche le programme suivant ?
static int f(int x) {
try {
System.out.println("try " + x);
if (x == 0) throw new IllegalArgumentException("zéro");
return 10 / x;
} catch (IllegalArgumentException e) {
System.out.println("catch " + e.getMessage());
return -1;
} finally {
System.out.println("finally " + x);
}
}
public static void main(String[] args) {
System.out.println("résultat " + f(5));
System.out.println("résultat " + f(0));
}Corrigé
try 5
finally 5
résultat 2
try 0
catch zéro
finally 0
résultat -1
Pour , l'instruction return 10 / x; calcule la valeur , mais avant que la méthode ne rende la main, le bloc finally s'exécute : « finally 5 » s'affiche avant « résultat 2 ». Pour , l'exception est rattrapée, le catch prépare la valeur , puis finally s'exécute encore. Le bloc finally passe donc même devant un return.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.