programmation Java (école d'ingénieur) · Chapitre 11 · Exercice de TD
L'ordre des catch
Exceptions · niveau 1 (application)
Énoncé
Le code suivant ne compile pas. Pourquoi ? Le corriger de deux façons.
try {
System.out.println(10 / args.length);
} catch (Exception e) {
System.out.println("erreur");
} catch (ArithmeticException e) {
System.out.println("division par zéro");
}Corrigé
ArithmeticException est une sous-classe d'Exception : le premier catch la rattrape déjà, le second ne serait jamais exécuté. Le compilateur répond exception ArithmeticException has already been caught. Première correction : inverser les deux blocs (du plus précis au plus général).
try {
System.out.println(10 / args.length);
} catch (ArithmeticException e) {
System.out.println("division par zéro");
} catch (Exception e) {
System.out.println("erreur");
}
Seconde correction, meilleure : supprimer le catch (Exception e), qui rattraperait des erreurs que l'on ne sait pas traiter. Mieux encore, tester args.length == 0 avant de diviser : une division par zéro se prévoit.
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.