Understanding Exception Hierarchy
Swipe um das Menü anzuzeigen
Beim Arbeiten mit Fehlerbehandlung in Python ist es wichtig, die Struktur der eingebauten Ausnahme-Klassen zu verstehen. Alle exceptions erben von der Basisklasse BaseException. Die meisten Ausnahmen, die im alltäglichen Code behandelt werden, sind Unterklassen von Exception, welche wiederum ein direktes Kind von BaseException ist. Dieses Design ermöglicht es, breite Fehlerkategorien abzufangen oder spezifische Probleme gezielt zu behandeln.
Häufig verwendete Ausnahmen wie ValueError, TypeError, KeyError und IOError (in modernen Python-Versionen auch als OSError bekannt) sind alle Unterklassen von Exception. Es gibt auch speziellere Ausnahmen wie ZeroDivisionError und IndexError, die von diesen allgemeinen Klassen erben. Einige Ausnahmen wie KeyboardInterrupt und SystemExit erben direkt von BaseException – diese sollten in normalen Programmen in der Regel nicht abgefangen werden.
Das Verständnis dieser Hierarchie hilft dabei, präzise try/except-Blöcke zu schreiben, sodass nur beabsichtigte Ausnahmen abgefangen werden und kritische Systemsignale nicht unterdrückt werden.
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. Welche eingebaute Ausnahme-Klasse würden Sie verwenden, um Fehler beim Versuch abzufangen, einen String in eine Ganzzahl zu konvertieren, der nicht konvertiert werden kann?
2. Welche eingebaute Ausnahme wird ausgelöst, wenn Sie versuchen, auf einen nicht vorhandenen Schlüssel in einem Dictionary zuzugreifen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen