Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Understanding Exception Hierarchy | Comprehensive Error Handling
Python Fortgeschrittene Konzepte

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.

1234567891011121314151617181920212223242526272829303132
def 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?

question mark

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?

Wählen Sie die richtige Antwort aus

question mark

Welche eingebaute Ausnahme wird ausgelöst, wenn Sie versuchen, auf einen nicht vorhandenen Schlüssel in einem Dictionary zuzugreifen?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 1
some-alt