QCMUP.COM

Liste QCM Python Corrigé – Partie 8

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 Python Corrigé – Partie 8 – Python

L a gestion des erreurs fait partie des compétences essentielles en Python, parce qu’un programme sérieux doit savoir réagir quand quelque chose ne se déroule pas comme prévu.

Une saisie utilisateur incorrecte, un fichier manquant, une division impossible ou une donnée mal formée peuvent survenir à tout moment, surtout dans un contexte d’examen ou de projet réel.

Apprendre à encadrer ces situations permet d’écrire un code plus robuste, plus lisible et surtout plus fiable.

Dans cette page, vous allez travailler les mécanismes clés de Python pour traiter les problèmes proprement : organiser un bloc sensible, capturer des exceptions précises, récupérer des informations utiles sur l’erreur, et garantir l’exécution d’actions indispensables comme la fermeture d’un fichier.

L’objectif est de passer d’un script fragile à un programme qui anticipe, explique et continue de fonctionner intelligemment.

La gestion des erreurs fait partie des compétences essentielles en Python, parce qu’un programme sérieux doit savoir réagir quand quelque chose ne se déroule pas comme prévu.

Une saisie utilisateur incorrecte, un fichier manquant, une division impossible ou une donnée mal formée peuvent survenir à tout moment, surtout dans un contexte d’examen ou de projet réel.

Apprendre à encadrer ces situations permet d’écrire un code plus robuste, plus lisible et surtout plus fiable.

Dans cette page, vous allez travailler les mécanismes clés de Python pour traiter les problèmes proprement : organiser un bloc sensible, capturer des exceptions précises, récupérer des informations utiles sur l’erreur, et garantir l’exécution d’actions indispensables comme la fermeture d’un fichier.

L’objectif est de passer d’un script fragile à un programme qui anticipe, explique et continue de fonctionner intelligemment.

QCM 1 Corrigé

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

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

Réponse correcte : B

Justification :
Le bloc 'try' permet de tester une portion de code pour détecter d'éventuelles erreurs sans arrêter le programme.

QCM 2 Corrigé

Quel bloc s'exécute uniquement si une erreur survient dans le bloc d'essai ?

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

Réponse correcte : C

Justification :
En Python, 'except' intercepte l'exception levée dans le bloc 'try' pour la traiter proprement.

QCM 3 Corrigé

Comment appelle-t-on l'action de signaler une erreur en programmation Python ?

A. Envoyer une alerte
B. Lever une exception
C. Lancer un bug
D. Casser le script
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
On dit que Python 'lève' (raise) une exception lorsqu'une opération rencontre une anomalie.

QCM 4 Corrigé

Quelle exception est levée lors d'une division par zéro ?

A. ZeroDivisionError
B. MathError
C. NullDivisionError
D. InfinityError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
ZeroDivisionError est l'exception spécifique dédiée aux erreurs de division arithmétique par 0.

QCM 5 Corrigé

Quel bloc s'exécute dans tous les cas, qu'il y ait eu une erreur ou non ?

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

Réponse correcte : D

Justification :
Le bloc 'finally' est utilisé pour le nettoyage (fermeture de fichiers, etc.), quel que soit le résultat.

QCM 6 Corrigé

À quoi sert le bloc 'else' dans une structure try/except ?

A. À définir une alternative en cas d'erreur
B. À s'exécuter seulement si aucune exception n'a été levée
C. À capturer toutes les erreurs restantes
D. À forcer l'arrêt du programme
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le bloc 'else' intervient uniquement si le code du 'try' s'est déroulé avec succès sans erreur.

QCM 7 Corrigé

Quelle exception est levée si vous tentez de convertir 'Bonjour' en entier (int) ?

A. TypeError
B. ConversionError
C. ValueError
D. StringError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
ValueError survient quand le type est correct mais que la valeur est inappropriée pour l'opération.

QCM 8 Corrigé

Que se passe-t-il si une erreur survient et n'est pas gérée par un 'except' ?

A. Le programme s'arrête brutalement (crash)
B. Python ignore simplement l'erreur
C. Le programme redémarre tout seul
D. L'erreur est stockée dans une variable par défaut
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Une exception non gérée remonte jusqu'à l'interpréteur et provoque l'arrêt du script.

QCM 9 Corrigé

Comment capturer une exception et stocker son message dans une variable 'e' ?

A. except Exception = e:
B. except Exception as e:
C. except e from Exception:
D. except(Exception, e):
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le mot-clé 'as' permet d'assigner l'objet exception à une variable pour l'analyser ou l'afficher.

QCM 10 Corrigé

Quelle erreur survient si vous accédez à une variable non définie ?

A. NameError
B. VariableError
C. KeyError
D. UnboundError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
NameError est levée lorsque l'identifiant (le nom de la variable) n'est pas trouvé dans la portée actuelle.

QCM 11 Corrigé

Peut-on utiliser plusieurs blocs 'except' pour un seul 'try' ?

A. Non, un seul par try
B. Oui, pour gérer différents types d'erreurs spécifiquement
C. Seulement si on utilise 'finally'
D. Oui, mais ils doivent avoir le même nom
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Cela permet de donner une réponse adaptée selon que l'erreur soit mathématique, de saisie ou de fichier.

QCM 12 Corrigé

Quelle exception est levée si on cherche une clé absente dans un dictionnaire ?

A. IndexError
B. MissingError
C. KeyError
D. DictionaryError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
KeyError est spécifique aux dictionnaires lorsqu'une clé demandée n'existe pas.

QCM 13 Corrigé

Comment lever manuellement une exception dans son propre code ?

A. throw Exception()
B. error Exception()
C. stop Exception()
D. raise Exception()
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : D

Justification :
Le mot-clé 'raise' déclenche volontairement une exception pour signaler un problème logique.

QCM 14 Corrigé

Lequel de ces codes est la syntaxe minimale correcte ?

A. try: ... except: ...
B. try: ...
C. except: ...
D. try: ... else: ...
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Un bloc 'try' doit obligatoirement être suivi d'au moins un 'except' ou d'un 'finally'.

QCM 15 Corrigé

Quelle erreur survient si on accède à l'indice 10 d'une liste de 3 éléments ?

A. ValueError
B. IndexError
C. ListError
D. RangeError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
IndexError indique qu'on tente d'accéder à une position qui n'existe pas dans la séquence.

QCM 16 Corrigé

Pourquoi est-il déconseillé d'utiliser un 'except' vide (sans nom d'exception) ?

A. C'est plus lent
B. Cela ne fonctionne pas en Python 3
C. Cela peut cacher des erreurs imprévues (comme une faute de frappe)
D. Cela consomme trop de mémoire
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Un 'except' générique capture tout, y compris les erreurs que vous n'aviez pas prévu de gérer.

QCM 17 Corrigé

Quelle exception est levée si vous additionnez un entier et une chaîne (ex: 5 + 'a') ?

A. TypeError
B. MathError
C. ValueError
D. MixError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
TypeError survient quand une opération est appliquée à un objet de type inapproprié.

QCM 18 Corrigé

Dans une structure try/except/finally, quel bloc gère la fermeture d'un fichier ouvert ?

A. try
B. except
C. else
D. finally
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : D

Justification :
Le bloc 'finally' garantit que le fichier sera fermé même si le programme a planté.

QCM 19 Corrigé

Quelle erreur survient si on essaie d'ouvrir un fichier qui n'existe pas ?

A. FileNotFoundError
B. FileMissingError
C. IOError
D. KeyError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
FileNotFoundError est l'exception standard levée par la fonction open() si le chemin est invalide.

QCM 20 Corrigé

Comment peut-on gérer plusieurs exceptions dans un seul bloc 'except' ?

A. except ValueError + TypeError:
B. except (ValueError, TypeError):
C. except ValueError | TypeError:
D. except ValueError, TypeError:
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
On peut passer un tuple d'exceptions pour appliquer le même traitement à plusieurs types d'erreurs.

QCM 21 Corrigé

L'instruction 'try: print(10/0) except ZeroDivisionError: pass' va :

A. Afficher une erreur
B. Arrêter le programme
C. Ne rien faire et continuer
D. Afficher 0
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Le mot-clé 'pass' indique à Python de ne rien faire, ignorant ainsi silencieusement l'erreur.

QCM 22 Corrigé

Quelle est l'exception de base de laquelle presque toutes les autres héritent ?

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

Réponse correcte : B

Justification :
Presque toutes les exceptions intégrées dérivent de la classe 'Exception'.

QCM 23 Corrigé

Que signifie l'exception 'IndentationError' ?

A. Une variable est mal nommée
B. Le code est mal aligné visuellement
C. Une boucle est infinie
D. Un fichier est introuvable
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Il s'agit d'une erreur de syntaxe spécifique au non-respect des espaces/tabulations en Python.

QCM 24 Corrigé

Comment s'appelle l'affichage détaillé de l'erreur dans la console ?

A. Le log
B. Le rapport
C. La trace (Traceback)
D. L'historique
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Le Traceback montre la pile d'appels et la ligne précise où l'erreur a été générée.

QCM 25 Corrigé

Quelle exception survient si une récursion est trop profonde ?

A. OverflowError
B. MemoryError
C. RecursionError
D. LoopError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Python limite le nombre d'appels récursifs pour protéger la mémoire du système.

QCM 26 Corrigé

Quel est le but principal de la gestion des exceptions ?

A. Cacher tous les bugs aux utilisateurs
B. Rendre le programme plus rapide
C. Permettre au programme de continuer malgré des erreurs prévisibles
D. Supprimer le besoin de tester son code
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Cela permet de gérer les entrées invalides ou les problèmes réseaux sans interrompre l'expérience utilisateur.

QCM 27 Corrigé

Quelle exception est levée par la fonction input() si l'utilisateur interrompt le programme (Ctrl+C) ?

A. SystemExit
B. StopIteration
C. KeyboardInterrupt
D. UserInterrupt
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
KeyboardInterrupt permet au programme de réagir proprement à une demande d'arrêt manuel.

QCM 28 Corrigé

Lequel de ces mots-clés n'appartient PAS au système de gestion d'erreurs Python ?

A. finally
B. except
C. else
D. throw
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : D

Justification :
En Python on utilise 'raise', alors que 'throw' est utilisé dans d'autres langages comme Java ou C++.

QCM 29 Corrigé

Peut-on mettre un bloc try à l'intérieur d'un autre bloc try ?

A. Oui, ce sont des exceptions imbriquées
B. Non, c'est interdit
C. Seulement si elles gèrent la même erreur
D. Seulement à l'intérieur d'une fonction
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
L'imbrication permet de gérer des erreurs de manière très granulaire selon les étapes du code.

QCM 30 Corrigé

Quelle erreur est levée si vous tentez de modifier un élément d'un tuple ?

A. AttributeError
B. ImmutableError
C. TypeError
D. ValueError
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Le tuple étant immuable, Python lève une TypeError car il ne supporte pas l'assignation d'item.

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

La gestion des exceptions est un mécanisme qui permet de traiter proprement les erreurs pendant l’exécution d’un programme. Elle évite qu’un problème prévisible provoque l’arrêt brutal du script et permet de contrôler la réaction du code.

Une exception est un événement anormal qui interrompt le déroulement normal d’un programme. En Python, elle est représentée par un objet qui décrit le type d’erreur et, souvent, un message explicatif.

Une erreur d’exécution apparaît pendant que le programme tourne, quand une opération devient impossible ou invalide. Elle se distingue des erreurs de syntaxe, qui empêchent le code de démarrer.

Le bloc try contient le code susceptible de provoquer une erreur. Il sert à « tester » l’exécution d’instructions en sachant qu’un plan de secours existe en cas de problème.

Le bloc except définit quoi faire lorsqu’une exception survient dans le try. Il permet de capturer un type d’erreur précis et de décider d’une action adaptée plutôt que de laisser le programme s’arrêter.

Le bloc finally s’exécute quoi qu’il arrive, qu’une erreur se produise ou non. Il est très utilisé pour libérer des ressources, comme fermer un fichier ou une connexion.

Le bloc else s’exécute uniquement si aucune exception n’a été levée dans le try. Il sert à séparer le code « réussi » du code de gestion d’erreur, pour gagner en clarté.

Lever une exception consiste à signaler volontairement qu’un problème doit être traité comme une erreur. Cela permet d’arrêter un traitement au bon moment et d’informer clairement le reste du programme.

raise permet de déclencher une exception manuellement dans son code. On l’utilise pour refuser une situation invalide, vérifier une condition, ou propager un problème détecté.

Capturer une exception avec « as e » permet de stocker l’objet d’erreur dans une variable. On peut ainsi récupérer son message, son type ou l’afficher pour diagnostiquer plus facilement.

Un except basé sur Exception capture la plupart des erreurs courantes sans viser un type précis. Il est utile en dernier recours, mais il doit rester contrôlé pour éviter de masquer des problèmes importants.

Un except vide attrape presque tout, y compris des erreurs qu’on ne voulait pas ignorer. Il est déconseillé car il peut cacher une faute de frappe, une erreur de logique ou un bug sérieux.

On peut gérer plusieurs types d’exceptions dans un seul except en les regroupant. Cela évite la répétition quand la réaction est la même pour différents cas d’erreurs.

Les exceptions imbriquées correspondent à un try placé à l’intérieur d’un autre try. Cette technique permet de gérer des opérations dépendantes avec des niveaux de sécurité différents.

Les exceptions en Python sont organisées en une hiérarchie, où des erreurs spécifiques héritent d’erreurs plus générales. Comprendre cette structure aide à choisir un type d’exception précis ou un parent commun.

Exception est une classe générale dont héritent la plupart des erreurs que l’on traite en pratique. La cibler permet de capturer un large ensemble de problèmes sans attraper tout ce qui existe.

Le traceback est l’affichage détaillé qui montre où l’erreur s’est produite et la chaîne d’appels qui y a mené. Il sert à remonter à la cause réelle d’un problème et à le corriger.

NameError survient quand on utilise un nom qui n’existe pas dans le contexte, comme une variable non définie. Il signale souvent une faute de frappe ou un oubli de déclaration.

TypeError apparaît quand on réalise une opération avec des types incompatibles, par exemple additionner un nombre et du texte. Il indique que le programme doit convertir ou adapter les données.

ValueError est levée quand une valeur a le bon type, mais un contenu invalide pour l’opération demandée. Un exemple typique est une conversion qui échoue parce que le texte n’est pas un nombre.

ZeroDivisionError se produit lorsqu’on tente de diviser par zéro. Cette situation est mathématiquement impossible et doit être anticipée par un contrôle ou une gestion d’exception.

IndexError survient quand on tente d’accéder à une position inexistante dans une liste ou une séquence. Elle révèle souvent un mauvais calcul d’indice ou une taille de collection plus petite que prévu.

KeyError apparaît lorsqu’on demande une clé absente dans un dictionnaire. Elle rappelle qu’il faut vérifier l’existence de la clé ou utiliser une méthode plus tolérante.

FileNotFoundError se produit quand on essaie d’ouvrir un fichier qui n’existe pas à l’emplacement indiqué. Elle aide à détecter un chemin incorrect, un nom de fichier erroné ou un fichier manquant.

IndentationError signale un problème d’alignement des blocs de code en Python. Comme l’indentation structure le programme, une mauvaise indentation empêche le code d’être interprété correctement.

RecursionError apparaît quand une fonction s’appelle trop profondément, au-delà de la limite autorisée. Elle indique souvent un cas d’arrêt manquant ou une récursion mal maîtrisée.

KeyboardInterrupt est déclenchée quand l’utilisateur interrompt volontairement le programme, souvent via Ctrl+C. C’est une exception utile à gérer pour quitter proprement et sauvegarder l’état si nécessaire.

pass est une instruction qui ne fait rien, mais qui permet de respecter la syntaxe quand un bloc est obligatoire. Elle peut servir temporairement pendant le développement ou pour ignorer un cas précis.

Un crash correspond à l’arrêt du programme causé par une erreur non gérée. Il survient lorsqu’aucun traitement ne capture l’exception et que Python met fin à l’exécution.

Un tuple est une séquence dont les éléments ne peuvent pas être modifiés après création. Toute tentative de modification directe échoue, ce qui en fait une structure fiable pour des données qui doivent rester stables.

À propos de ce QCM

E n Python, une erreur d’exécution ne signifie pas forcément que tout doit s’arrêter.

La gestion des exceptions sert justement à reprendre le contrôle quand une opération échoue, à condition de prévoir une structure adaptée.

Le principe repose sur un bloc d’essai qui regroupe les instructions “à risque”, puis sur un ou plusieurs blocs de capture qui définissent la réaction selon le type de problème rencontré.

L’intérêt de cibler des exceptions précises est double : vous évitez de masquer des bugs inattendus et vous donnez une réponse cohérente à chaque situation (donnée invalide, type incompatible, accès hors limites, clé absente, etc.).

Le bloc de fin, lui, joue un rôle de sécurité : certaines actions doivent se produire même si tout se passe mal.

C’est typiquement le cas de la libération de ressources, comme fermer un fichier, terminer une connexion ou nettoyer un état temporaire.

Un autre point important est la séparation claire entre ce qui s’exécute quand tout va bien et ce qui s’exécute en cas de problème : cela rend le code plus lisible et plus simple à maintenir.

Vous apprendrez aussi à “lever” une exception volontairement, ce qui est très utile pour valider une condition et refuser une entrée incohérente dès le départ.

Capturer l’erreur dans une variable permet ensuite d’obtenir un message explicatif, voire d’analyser la cause plus rapidement grâce à l’affichage détaillé de la trace.

Enfin, ces notions s’accompagnent de bonnes pratiques concrètes : regrouper plusieurs exceptions quand le traitement est identique, éviter les captures trop larges, et comprendre pourquoi certaines erreurs de structure (comme l’indentation) empêchent même le code de démarrer.

Conclusion

M aîtriser les exceptions en Python, c’est apprendre à écrire des programmes qui résistent mieux aux imprévus.

Vous saurez reconnaître les erreurs fréquentes, choisir une capture pertinente, récupérer des informations utiles pour comprendre l’origine du problème, et sécuriser les actions indispensables grâce au bloc de fin.

Avec ces réflexes, votre code devient plus clair, plus professionnel et plus facile à déboguer.

En vous entraînant régulièrement, vous gagnerez en confiance : au lieu de subir une erreur, vous saurez l’anticiper, la traiter proprement et poursuivre le traitement de manière contrôlée.