Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Ausnahmeverkettung und Erneutes Auslösen | Comprehensive Error Handling
Python Fortgeschrittene Konzepte

Ausnahmeverkettung und Erneutes Auslösen

Swipe um das Menü anzuzeigen

Beim Behandeln von Fehlern in Python kann es vorkommen, dass das Abfangen einer Ausnahme dazu führt, dass eine andere Ausnahme ausgelöst wird. In solchen Fällen ist es wichtig, den Kontext des ursprünglichen Fehlers zu bewahren. Das Exception Chaining in Python ermöglicht dies mit dem Schlüsselwort from. Durch das explizite Verketten von Ausnahmen erhalten Sie detailliertere Tracebacks, was das Nachvollziehen der Fehlerabfolge erleichtert.

Angenommen, Sie schreiben eine Funktion, die Eingaben aus einer Datei verarbeitet. Tritt beim Lesen der Datei ein Fehler auf, möchten Sie möglicherweise eine benutzerdefinierte Ausnahme auslösen, die besser zur Logik Ihrer Anwendung passt, aber dennoch Informationen über den ursprünglichen Fehler behalten. Mit raise NewException() from original_exception können Sie genau das erreichen.

Das erneute Auslösen von Ausnahmen ist eine verwandte Technik. Manchmal möchten Sie nach dem Abfangen einer Ausnahme zunächst Aufräumarbeiten oder Logging durchführen und dann die Ausnahme weiterreichen. Dies gelingt, indem Sie einfach raise ohne Angabe einer Ausnahme verwenden, wodurch die zuletzt abgefangene Ausnahme erneut ausgelöst wird. Sowohl Exception Chaining als auch das erneute Auslösen von Ausnahmen sind wertvoll für das Schreiben von robustem und gut nachvollziehbarem Code.

12345678910111213141516
# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise

Dieser Code zeigt ein einfaches Beispiel für Exception Chaining und das erneute Auslösen von Ausnahmen in Python. Die Funktion divide versucht, zwei Zahlen zu dividieren, fängt dabei eine ZeroDivisionError-Ausnahme ab und verknüpft sie mit einer neuen ValueError-Ausnahme mit einer klaren Fehlermeldung. Der äußere try-except-Block fängt die ValueError-Ausnahme ab, gibt den vollständigen Traceback mit beiden Ausnahmen aus und löst die Ausnahme anschließend erneut aus, um sie weiterzugeben.

question mark

Welcher der folgenden Punkte ist ein Hauptvorteil des Exception Chaining in Python?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6

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 6
some-alt