DR ZOTCHI GIOVANI – CHAP8 JAVA – EXO
Chapitre 8 : Packages, Exceptions et Gestion des Erreurs.
I. Quiz (QCM) - Test de connaissances
1. Quelle est la principale différence entre une Error et une Exception en Java ?
A) Les Error sont causées par le développeur, les Exception par l'utilisateur.
B) Une Error est un problème grave (souvent lié à la JVM) qu'on ne doit pas essayer
de capturer, tandis qu'une Exception peut et doit souvent être gérée.
C) C'est exactement la même chose, ce sont juste des synonymes.
D) Les Error doivent être capturées avec un bloc catch, pas les Exception.
2. À quoi sert le bloc finally ?
A) À exécuter du code uniquement si aucune exception n'a été levée.
B) À exécuter du code uniquement si une exception a été capturée.
C) À arrêter définitivement l'exécution du programme.
D) À exécuter du code dans tous les cas (erreur ou non), généralement pour libérer des
ressources (fermer un fichier, un scanner, etc.).
3. Quel mot-clé utilise-t-on dans la signature d'une méthode pour avertir qu'elle peut
déclencher une exception ?
A) throw
B) throws
C) catch
D) try
4. Quel mot-clé utilise-t-on à l'intérieur du code pour déclencher MANUELLEMENT
une exception ?
A) throw
B) throws
C) raise
D) yield
5. Qu'est-ce qu'une "Checked Exception" (Exception vérifiée) ?
A) Une exception qui a déjà été corrigée par le développeur.
B) Une exception liée à une erreur de logique pure (comme NullPointerException).
C) Une exception que le compilateur Java vous oblige à gérer (via try-catch ou
throws), sinon le code ne compile pas.
D) Une exception qui s'affiche en vert dans la console.
1
DR ZOTCHI GIOVANI – CHAP8 JAVA – EXO
II. Exercices d'application
Exercice 1 : Sécuriser une saisie utilisateur Écrivez un programme (méthode main) qui
demande à l'utilisateur de saisir son âge (un entier) à l'aide d'un Scanner.
1. Utilisez un bloc try-catch pour capturer l'exception InputMismatchException au
cas où l'utilisateur taperait du texte (ex: "vingt") au lieu d'un nombre.
2. Si l'erreur se produit, affichez : "Erreur : Veuillez saisir un nombre entier."
3. Ajoutez un bloc finally qui affiche : "Fin de la tentative de saisie."
Exercice 2 : Créer et lancer une exception personnalisée
1. Créez une classe d'exception personnalisée nommée SoldeNegatifException qui
hérite de Exception. Son constructeur doit accepter un message d'erreur.
2. Créez une classe Compte avec un attribut solde (double).
3. Ajoutez une méthode retirer(double montant) qui lance (throw) votre
SoldeNegatifException si le montant à retirer est supérieur au solde. Sinon, elle
déduit le montant.
III. Les Exercices
Piège n°1 : L'ordre des catch Pourquoi ce code refuse-t-il de compiler ?
Java
try {
int resultat = 10 / 0;
} catch (Exception e) {
[Link]("Une erreur générale est survenue.");
} catch (ArithmeticException e) {
[Link]("Erreur mathématique !");
}
Piège n°2 : Le code mort (Unreachable code) Quelle est l'erreur de compilation dans cette
méthode ?
Java
public void verifierAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("Trop jeune !");
[Link]("Vérification terminée."); // Que se passe-t-il
ici ?
}
}
Piège n°3 : Le duel return vs finally Qu'est-ce que cette méthode va afficher dans la
console, et quelle valeur va-t-elle retourner ?
Java
public int testFinally() {
try {
[Link]("Dans le try");
return 1;
2
DR ZOTCHI GIOVANI – CHAP8 JAVA – EXO
} finally {
[Link]("Dans le finally");
return 2;
}
}