QCMUP.COM

Liste QCM JAVA Corrigé – Partie 6

Entraînez-vous avec des questions corrigées, progressez étape par étape, puis consolidez vos notions grâce aux définitions et explications.

30 questions Réponses expliquées Réviser → Pratiquer
Liste QCM JAVA Corrigé – Partie 6 – JAVA

La gestion des erreurs fait partie des compétences indispensables en Java, car un programme réel doit savoir réagir correctement aux situations imprévues.

Une conversion impossible, une division risquée ou une référence non initialisée peuvent interrompre brutalement l’exécution si elles ne sont pas anticipées.

C’est précisément pour cela que Java propose un mécanisme structuré basé sur les exceptions.

Les QCM de cette thématique abordent les notions clés liées au traitement des exceptions : blocs try-catch-finally, types d’exceptions, propagation et bonnes pratiques professionnelles.

Ces concepts sont fréquemment évalués dans les examens, les concours et les entretiens, car ils reflètent la capacité d’un développeur à écrire un code robuste et fiable.

Comprendre comment détecter, intercepter et traiter une erreur permet non seulement d’éviter des arrêts brutaux, mais aussi d’améliorer la qualité globale d’une application et l’expérience utilisateur.

La gestion des erreurs fait partie des compétences indispensables en Java, car un programme réel doit savoir réagir correctement aux situations imprévues.

Une conversion impossible, une division risquée ou une référence non initialisée peuvent interrompre brutalement l’exécution si elles ne sont pas anticipées.

C’est précisément pour cela que Java propose un mécanisme structuré basé sur les exceptions.

Les QCM de cette thématique abordent les notions clés liées au traitement des exceptions : blocs try-catch-finally, types d’exceptions, propagation et bonnes pratiques professionnelles.

Ces concepts sont fréquemment évalués dans les examens, les concours et les entretiens, car ils reflètent la capacité d’un développeur à écrire un code robuste et fiable.

Comprendre comment détecter, intercepter et traiter une erreur permet non seulement d’éviter des arrêts brutaux, mais aussi d’améliorer la qualité globale d’une application et l’expérience utilisateur.

QCM 1 Corrigé

Qu'est-ce qu'une exception en Java ?

A. Une erreur de syntaxe empêchant la compilation
B. Un événement qui interrompt le flux normal des instructions pendant l'exécution
C. Une variable qui n'a pas été initialisée
D. Un commentaire spécifique pour le débogage
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Une exception est un problème qui survient durant l'exécution (runtime) du programme, contrairement aux erreurs de syntaxe.

QCM 2 Corrigé

Quel mot-clé est utilisé pour introduire un bloc de code susceptible de générer une erreur ?

A. error
B. check
C. try
D. catch
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Le bloc 'try' entoure le code 'à risque' que l'on souhaite surveiller.

QCM 3 Corrigé

À quoi sert le bloc 'catch' ?

A. À définir le code qui s'exécute si une exception survient dans le try
B. À ignorer purement et simplement l'erreur
C. À relancer le programme depuis le début
D. À vérifier la syntaxe du code avant l'exécution
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Le bloc 'catch' attrape l'exception pour permettre un traitement spécifique (affichage d'un message, log, etc.).

QCM 4 Corrigé

Quel bloc est exécuté à coup sûr, qu'une exception soit levée ou non ?

A. stop
B. catch
C. attempt
D. finally
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : D

Justification :
Le bloc 'finally' est utilisé pour libérer des ressources (fermer un fichier) quel que soit le résultat du try-catch.

QCM 5 Corrigé

Laquelle de ces erreurs est une 'ArithmeticException' typique ?

A. L'accès à un index de tableau inexistant
B. Une division par zéro
C. L'appel d'une méthode sur un objet 'null'
D. Une faute de frappe dans le nom d'une variable
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Java lève une ArithmeticException lorsqu'une opération mathématique est impossible, comme diviser un entier par zéro.

QCM 6 Corrigé

Qu'est-ce qu'une NullPointerException ?

A. Une erreur de calcul complexe
B. Tenter d'utiliser un objet qui n'est pas instancié (vaut null)
C. Avoir trop de variables dans une méthode
D. Une erreur lors de la fermeture du programme
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Elle survient quand on essaie d'accéder à un attribut ou une méthode d'une référence pointant vers 'null'.

QCM 7 Corrigé

Comment appelle-t-on le rapport affiché en console détaillant la suite d'appels menant à une erreur ?

A. Le code source
B. Le journal système
C. La stacktrace
D. Le debugger
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
La stacktrace (trace de la pile) est essentielle pour identifier la ligne précise et la cause d'un crash.

QCM 8 Corrigé

Peut-on avoir plusieurs blocs 'catch' pour un seul bloc 'try' ?

A. Oui, pour gérer différents types d'exceptions séparément
B. Non, un seul catch est autorisé par try
C. Oui, mais uniquement si on n'utilise pas de 'finally'
D. Non, cela provoque une erreur de compilation directe
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
On peut chaîner les catch du plus spécifique au plus général pour affiner la gestion des erreurs.

QCM 9 Corrigé

Lequel de ces éléments n'est PAS une exception ?

A. ArrayIndexOutOfBoundsException
B. NumberFormatException
C. PublicStaticVoidMainException
D. IOException
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Cette exception n'existe pas ; les autres sont des classes d'exceptions standards en Java.

QCM 10 Corrigé

Quelle est la classe parente de toutes les exceptions en Java ?

A. Error
B. Object
C. Exception
D. Throwable
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : D

Justification :
Throwable est la super-classe de Error et Exception. Seuls les objets de ce type peuvent être 'jetés' (thrown).

QCM 11 Corrigé

Que signifie le mot-clé 'throw' (sans 's') ?

A. Déclarer qu'une méthode peut générer une erreur
B. Lancer manuellement une exception dans le code
C. Attraper une erreur provenant d'une autre classe
D. Supprimer une variable de la mémoire
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
'throw' est utilisé pour déclencher volontairement une exception (ex: throw new Exception()).

QCM 12 Corrigé

Où place-t-on le mot-clé 'throws' (avec un 's') ?

A. Dans la signature d'une méthode
B. À l'intérieur d'un bloc catch
C. Au début d'une boucle for
D. Juste avant l'importation de packages
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
'throws' prévient l'appelant qu'une méthode peut propager certaines exceptions sans les gérer elle-même.

QCM 13 Corrigé

Une 'Checked Exception' est une exception qui :

A. Est ignorée par le compilateur
B. Doit obligatoirement être gérée ou déclarée (vérifiée à la compilation)
C. N'arrive que sur les systèmes Linux
D. Arrête l'ordinateur immédiatement
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le compilateur force le développeur à traiter ces exceptions (ex: lecture de fichier) car elles sont prévisibles.

QCM 14 Corrigé

Quel est l'avantage principal d'utiliser try-catch ?

A. Accélérer l'exécution du programme
B. Éviter que le programme ne s'arrête brutalement pour l'utilisateur
C. Rendre le code plus court et simple
D. Masquer les bugs pour ne pas avoir à les corriger
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
La gestion des exceptions permet un 'crash propre' ou une récupération, améliorant l'expérience utilisateur.

QCM 15 Corrigé

Que se passe-t-il si une exception survient mais n'est pas dans un bloc try-catch ?

A. Le programme continue comme si de rien n'était
B. La JVM affiche l'erreur et arrête le thread (le programme)
C. L'ordinateur redémarre
D. Le code s'autocorrige magiquement
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Sans gestionnaire, l'exception remonte jusqu'à la console, provoquant l'arrêt du programme.

QCM 16 Corrigé

Dans 'catch (Exception e)', que représente 'e' ?

A. Une erreur de syntaxe
B. L'entrée utilisateur
C. L'objet contenant les détails de l'exception
D. Une valeur booléenne
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
'e' est l'instance de l'exception capturée, contenant le message d'erreur et la stacktrace.

QCM 17 Corrigé

Laquelle est une 'Unchecked Exception' (Runtime) ?

A. SQLException
B. FileNotFoundException
C. ArrayIndexOutOfBoundsException
D. ClassNotFoundException
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Les erreurs logiques de programmation (indices, nullité) sont des RuntimeExceptions et ne sont pas vérifiées à la compilation.

QCM 18 Corrigé

Que fait la méthode 'e.getMessage()' ?

A. Elle efface l'erreur
B. Elle envoie un mail au développeur
C. Elle retourne une description textuelle de l'erreur
D. Elle ferme le programme proprement
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Cette méthode permet d'afficher une explication courte sur la cause de l'exception.

QCM 19 Corrigé

Peut-on utiliser un bloc 'try' sans 'catch' ?

A. Oui, à condition d'utiliser un bloc 'finally'
B. Non, le catch est obligatoire
C. Oui, si le code n'a aucune erreur
D. Seulement dans les interfaces
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
La combinaison try-finally est valide pour garantir l'exécution de code de nettoyage même sans capture d'erreur.

QCM 20 Corrigé

Quelle exception est levée lors d'une erreur de conversion de String en nombre ?

A. StringFormatException
B. NumberFormatException
C. MathError
D. CastException
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Elle survient quand on tente de transformer une chaîne non numérique (ex: 'abc') en entier via Integer.parseInt().

QCM 21 Corrigé

Quelle est la bonne pratique pour l'ordre des blocs 'catch' ?

A. Du plus général au plus spécifique
B. Peu importe l'ordre
C. Du plus spécifique au plus général
D. Par ordre alphabétique
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Si on place Exception (général) avant NullPointerException (spécifique), le second ne sera jamais atteint.

QCM 22 Corrigé

Que signifie 'L'exception a été propagée' ?

A. Elle a été supprimée
B. Elle a été envoyée à la méthode appelante car non gérée ici
C. Elle a été dupliquée dans plusieurs classes
D. Elle a été corrigée automatiquement
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
La propagation est le mécanisme de remontée de l'exception dans la pile d'appels.

QCM 23 Corrigé

Lequel de ces codes est syntaxiquement correct ?

A. try { ... } catch { ... }
B. try { ... } catch (Exception e) { ... }
C. try { ... } throw (e) { ... }
D. catch (e) { ... } try { ... }
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le catch doit obligatoirement spécifier le type de l'exception entre parenthèses.

QCM 24 Corrigé

Quelle est la différence entre Error et Exception ?

A. Error est plus grave et ne doit généralement pas être catché
B. Exception est plus grave
C. Il n'y a aucune différence
D. Error est pour les débutants, Exception pour les pros
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Les Errors concernent souvent des problèmes système majeurs (ex: mémoire saturée) impossibles à gérer par le code.

QCM 25 Corrigé

Que fait 'e.printStackTrace()' ?

A. Imprime le code source sur papier
B. Affiche le détail technique complet de l'erreur en console
C. Cache l'erreur à l'utilisateur
D. Envoie l'erreur vers une imprimante réseau
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
C'est l'outil de débogage numéro 1 pour savoir exactement ce qui s'est passé.

QCM 26 Corrigé

Comment créer sa propre classe d'exception ?

A. En créant une classe qui hérite de Exception
B. En utilisant le mot-clé 'new error'
C. Ce n'est pas possible en Java
D. En modifiant le fichier java.lang
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
On peut étendre la classe Exception ou RuntimeException pour créer des erreurs métier personnalisées.

QCM 27 Corrigé

Quelle exception se produit si on divise 5.0 par 0.0 ?

A. ArithmeticException
B. Aucune, le résultat est 'Infinity'
C. DivideByZeroError
D. NullPointerException
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
En Java, la division par zéro sur des nombres à virgule (double) ne lève pas d'exception mais produit une valeur spéciale.

QCM 28 Corrigé

Le bloc 'finally' s'exécute-t-il s'il y a un 'return' dans le try ?

A. Non, le return quitte la méthode immédiatement
B. Oui, juste avant que la méthode ne rende la main
C. Seulement si le catch est vide
D. Uniquement sur les serveurs
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Java garantit l'exécution du finally même après une instruction return ou une exception non capturée.

QCM 29 Corrigé

Lequel peut être évité avec un simple 'if' au lieu d'un try-catch ?

A. IOException
B. SQLException
C. NullPointerException
D. InterruptedException
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Il est souvent préférable de vérifier 'if (obj != null)' plutôt que d'attraper une exception de nullité.

QCM 30 Corrigé

Dans un environnement professionnel, catch(Exception e) sans rien faire est appelé :

A. Un code sécurisé
B. Avaler l'exception (swallowing), une mauvaise pratique
C. Une optimisation de performance
D. Un mode silencieux
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Masquer une erreur sans la traiter ou la logger rend le débogage impossible et cache des problèmes graves.

Mots & Définitions
Consultez les définitions des termes importants.

Une exception est un événement qui perturbe le déroulement normal d’un programme pendant son exécution. Elle signale qu’un problème est survenu et qu’un traitement particulier est nécessaire. Bien gérée, elle évite un arrêt brutal du programme.

try introduit un bloc de code dans lequel une erreur peut se produire. Il sert à encapsuler une opération risquée comme une lecture de fichier ou une conversion. Sans bloc associé, il ne permet pas à lui seul de gérer l’erreur.

catch contient le code exécuté lorsqu’une exception survient dans le bloc try. Il permet de traiter l’erreur de manière contrôlée, par exemple en affichant un message ou en prenant une action corrective. On peut en utiliser plusieurs pour gérer différents cas.

finally est un bloc qui s’exécute dans tous les cas, qu’une exception survienne ou non. Il sert surtout à libérer des ressources, comme fermer un fichier ou une connexion. Il s’exécute même lorsqu’un return intervient.

La stacktrace est le rapport détaillé affiché lors d’une erreur. Elle indique la suite des appels de méthodes ayant mené au problème. C’est un outil précieux pour localiser l’origine d’un bug.

Une NullPointerException survient lorsqu’on tente d’utiliser une référence qui vaut null. Cela arrive souvent quand un objet n’a pas été instancié ou qu’un résultat attendu n’existe pas. Un test préalable peut souvent éviter ce type d’erreur.

ArithmeticException est une exception liée à une opération arithmétique invalide, comme une division entière par zéro. Elle signale une situation mathématiquement impossible dans ce contexte. Elle aide à repérer rapidement une erreur de logique.

throw sert à lancer volontairement une exception dans le code. Il permet de signaler une situation anormale au moment où elle est détectée. C’est utile pour imposer des règles et sécuriser les traitements.

throws se place dans la signature d’une méthode pour indiquer qu’elle peut propager une exception. Cela informe les appelants qu’ils doivent gérer ou déclarer cette exception. C’est une partie importante du contrat d’une méthode.

Une checked exception est vérifiée par le compilateur. Elle doit être gérée avec try-catch ou déclarée avec throws. Elle correspond souvent à des problèmes prévisibles, comme les erreurs d’accès aux fichiers.

Une unchecked exception n’est pas imposée par le compilateur. Elle survient généralement à cause d’erreurs de programmation, comme un index invalide ou une référence null. Elle nécessite surtout de corriger la logique du code.

La propagation signifie qu’une exception remonte vers la méthode appelante si elle n’est pas gérée localement. Elle peut traverser plusieurs niveaux d’appels. Si personne ne la gère, le programme finit par s’arrêter.

printStackTrace() affiche la stacktrace complète de l’exception en console. Elle donne des informations techniques détaillées sur l’origine du problème. C’est utile en debug, mais à utiliser avec prudence en production.

getMessage() retourne un message descriptif associé à l’exception. Il s’agit souvent d’une explication courte sur la cause du problème. Cela permet d’afficher une information plus lisible pour le développeur.

Avaler une exception consiste à la capturer sans rien faire, ni message, ni traitement. Cette pratique rend les bugs difficiles à diagnostiquer. Elle est généralement considérée comme une mauvaise pratique en développement professionnel.

À propos de ce QCM

Cette série de QCM se concentre sur le fonctionnement des exceptions en Java et sur la manière de sécuriser l’exécution d’un programme.

Une exception représente un événement anormal qui peut interrompre le flux classique des instructions.

Java permet d’encadrer les portions de code sensibles avec un bloc try, puis de prévoir un ou plusieurs blocs catch afin de réagir de façon contrôlée selon le type d’erreur rencontré.

Cette approche évite qu’un problème se transforme automatiquement en arrêt brutal pour l’utilisateur.

Les QCM insistent sur le rôle du bloc finally, particulièrement important pour garantir certaines actions, comme la libération de ressources, même si une exception survient ou si un return est exécuté.

On retrouve aussi la notion de stacktrace, indispensable pour diagnostiquer l’origine d’une erreur, car elle retrace la chaîne des appels ayant mené au problème.

Un autre axe majeur concerne la distinction entre checked exceptions et unchecked exceptions.

Les premières doivent être gérées ou déclarées, car elles correspondent souvent à des risques externes prévisibles.

Les secondes apparaissent surtout lorsqu’il existe une erreur de logique, par exemple un accès hors limites ou l’utilisation d’un objet null.

Comprendre cette différence aide à adopter une stratégie de traitement adaptée.

Les QCM abordent également throw et throws, qui permettent respectivement de lancer une exception volontairement et d’annoncer qu’une méthode peut en propager une.

Cette logique de propagation constitue un élément essentiel du “contrat” entre méthodes.

Enfin, une attention particulière est portée aux bonnes pratiques, comme l’ordre des blocs catch (du plus spécifique au plus général) et l’évitement des pratiques dangereuses, telles que capturer une exception sans traitement.

L’ensemble de ces thèmes renforce l’analyse, l’auto-évaluation et la préparation aux situations professionnelles.

Conclusion

Ces QCM offrent une base solide pour maîtriser la gestion des exceptions en Java et développer des réflexes professionnels.

Ils permettent de comprendre comment encadrer du code sensible, diagnostiquer les erreurs et choisir une stratégie de traitement adaptée selon le contexte.

En s’entraînant régulièrement, l’utilisateur consolide sa rigueur, améliore la robustesse de ses programmes et gagne en assurance face aux situations imprévues.

Cette progression est essentielle pour réussir les évaluations et concevoir des applications plus fiables, plus maintenables et plus confortables à utiliser.