Exception Handling in Python: Das komplette Tutorial
Fehler sind ein unvermeidlicher Teil der Softwareentwicklung. Selbst der sorgfältigste Code kann auf unerwartete Situationen stoßen: eine fehlende Datei, eine Division durch Null, Netzwerkprobleme und vieles mehr. Um einen Programmabsturz in solchen Fällen zu verhindern, bietet Python einen leistungsstarken Mechanismus zur Ausnahmebehandlung, der auf den Konstrukten try-except-finally basiert.
Wie funktioniert try-except-finally in Python?
Das Konstrukt try-except-finally ermöglicht es, Ausnahmen (Exceptions) abzufangen, die während der Programmausführung auftreten, und angemessen darauf zu reagieren.
Allgemeine Syntax:
try:
# Code, der eine Exception auslösen könnte
except SomeException:
# Code zur Behandlung der Exception
finally:
# Code, der auf jeden Fall ausgeführt wird
Erklärung der Blöcke:
try: In diesem Block steht der Hauptcode, in dem potenziell eine Exception auftreten kann.except: Hier wird festgelegt, was passieren soll, wenn imtry-Block eine Exception auftritt. Du kannst einen bestimmten Exception-Typ angeben (z.B.SomeException), der abgefangen werden soll.finally: Derfinally-Block wird immer ausgeführt – unabhängig davon, ob imtry-Block eine Exception ausgelöst wurde oder nicht. Er wird typischerweise zum Freigeben von Ressourcen verwendet, wie dem Schließen von Dateien, Netzwerkverbindungen oder Datenbankverbindungen.
Beispiel für try-except-finally
try:
number = int(input("Gib eine ganze Zahl ein: "))
result = 10 / number
print(f"Ergebnis: {result}")
except ZeroDivisionError:
print("Fehler: Division durch Null ist nicht erlaubt.")
except ValueError:
print("Fehler: Bitte gib eine gültige ganze Zahl ein.")
finally:
print("Programm wird beendet.")
Wie dieser Code funktioniert:
- Das Programm fordert den Benutzer zur Eingabe einer ganzen Zahl auf.
- Wenn der Benutzer
0eingibt, wird eineZeroDivisionError-Exception ausgelöst und der entsprechendeexcept-Block ausgeführt. - Wenn der Benutzer keine ganze Zahl eingibt, wird eine
ValueError-Exception ausgelöst und der entsprechendeexcept-Block ausgeführt. - Der
finally-Block wird in jedem Fall ausgeführt und gibt eine Meldung aus, dass das Programm beendet wird.
Wozu dient der finally-Block?
Der finally-Block stellt sicher, dass wichtiger Code unabhängig vom Auftreten einer Exception ausgeführt wird. Hier sind einige häufige Anwendungsfälle:
-
Dateien schließen:
file = open("data.txt", "r") try: content = file.read() # Inhalt der Datei verarbeiten finally: file.close() # Garantiertes Schließen der Datei -
Ressourcen freigeben: Freigabe von Netzwerkverbindungen, Datenbankverbindungen und anderen Ressourcen, die nach der Nutzung geschlossen oder freigegeben werden müssen.
-
Logging abschließen oder temporäre Daten bereinigen: Der
finally-Block kann verwendet werden, um das Schreiben in eine Logdatei abzuschließen oder temporäre Dateien zu löschen, die während der Programmausführung erstellt wurden.
Mehrere Exceptions abfangen
In einem einzigen try-Block können verschiedene Arten von Exceptions auftreten. Python bietet mehrere Möglichkeiten, damit umzugehen:
Verwendung mehrerer except-Blöcke
try:
number = int(input("Gib eine Zahl ein: "))
result = 100 / number
print(resu