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

L a 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

C ette 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

C es 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.

↑