Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →