Compréhension de la Hiérarchie des Exceptions
Glissez pour afficher le menu
Lorsque vous travaillez avec la gestion des erreurs en Python, il est important de comprendre la structure de ses classes d'exceptions intégrées. Toutes les exceptions héritent de la classe racine BaseException. La plupart de celles que vous traiterez dans le code quotidien sont des sous-classes de Exception, qui elle-même est un enfant direct de BaseException. Cette conception permet d'intercepter de larges catégories d'erreurs ou de gérer des problèmes spécifiques.
Les exceptions couramment utilisées comme ValueError, TypeError, KeyError et IOError (également appelée OSError dans les versions récentes de Python) sont toutes des sous-classes de Exception. Il existe également des exceptions plus spécialisées, telles que ZeroDivisionError et IndexError, qui héritent de ces classes générales. Certaines exceptions, comme KeyboardInterrupt et SystemExit, héritent directement de BaseException — elles ne sont généralement pas destinées à être interceptées dans les programmes classiques.
Comprendre cette hiérarchie permet d'écrire des blocs try/except précis, en interceptant uniquement ce que vous souhaitez et en évitant de masquer des signaux système critiques.
1234567891011121314151617181920212223242526272829303132def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()
1. Quelle classe d'exception intégrée utiliseriez-vous pour intercepter les erreurs lors de la tentative de conversion d'une chaîne en entier qui ne peut pas être convertie ?
2. Quelle exception intégrée est levée lorsque vous essayez d'accéder à une clé de dictionnaire qui n'existe pas ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion