- 1 1. Überblick über die Fehlerbehandlung in Python
- 2 2. Was ist die try-except-Anweisung?
- 3 3. Häufige Ausnahmen und deren Behandlung
- 4 4. Fehlerdetails mit Ausnahmeobjekten erfassen
- 5 5. Verwendung des finally-Blocks
- 6 6. Auslösen von Ausnahmen mit raise
- 7 7. Best Practices für Fehlerbehandlung in Python
1. Überblick über die Fehlerbehandlung in Python
Was ist Fehlerbehandlung in Python?
Während der Programmausführung können unerwartete Fehler auftreten. Diese werden als „Ausnahmen“ bezeichnet, und wenn eine Ausnahme auftritt, wird das Programm normalerweise beendet. In Python gibt es jedoch eine leistungsfähige Fehlerbehandlung, mit der Ausnahmen abgefangen und behandelt werden können. Dadurch bleibt das Programm auch bei Fehlern funktionsfähig und kann gezielt darauf reagieren.
Warum ist Fehlerbehandlung wichtig?
Fehlerbehandlung ist entscheidend, damit Programme auch bei Fehlern benutzerfreundlich weiterlaufen können. Außerdem hilft sie, Fehlerursachen zu identifizieren und das Debugging zu erleichtern, wodurch die Zuverlässigkeit Ihrer Software steigt.
2. Was ist die try-except
-Anweisung?
Grundlegende Syntax
Mit der try-except
-Anweisung in Python können Sie Code, der potenziell Fehler auslöst, in einen try
-Block schreiben. Tritt ein Fehler auf, wird der zugehörige except
-Block ausgeführt. Die Grundstruktur sieht so aus:
try:
# Code, der einen Fehler verursachen könnte
except SomeError:
# Fehlerbehandlung
Wird der Code im try
-Block fehlerfrei ausgeführt, wird der except
-Block übersprungen. Tritt jedoch ein Fehler auf, wird dieser im passenden except
-Block behandelt.
Typisches Beispiel: Division durch Null
Ein häufiger Fehler ist die Division durch null, die einen ZeroDivisionError
auslöst. Das folgende Beispiel behandelt diesen Fehler:
try:
result = 10 / 0
except ZeroDivisionError:
print("Division durch Null ist nicht erlaubt")

3. Häufige Ausnahmen und deren Behandlung
1. ZeroDivisionError
Diese Ausnahme tritt auf, wenn eine Division durch null versucht wird. Python wirft in diesem Fall automatisch einen ZeroDivisionError
.
try:
result = 10 / 0
except ZeroDivisionError:
print("Division durch Null ist nicht erlaubt")
2. ValueError
Ein ValueError
tritt auf, wenn eine Funktion oder Operation einen ungeeigneten Wert erhält. Im folgenden Beispiel wird versucht, einen nicht-numerischen String in eine Zahl umzuwandeln:
try:
num = int("not_a_number")
except ValueError:
print("Ungültiger Wert")
3. Umgang mit mehreren Ausnahmen
Wenn Sie mehrere Ausnahmen gleichzeitig behandeln möchten, können Sie diese im except
-Block zusammenfassen:
try:
result = 10 / "string"
except (ZeroDivisionError, TypeError):
print("Ein Fehler ist aufgetreten")
4. Fehlerdetails mit Ausnahmeobjekten erfassen
Ausnahmeobjekte mit as
erhalten
Mit dem Schlüsselwort as
im except
-Block können Sie das Ausnahmeobjekt erfassen. So erhalten Sie detaillierte Fehlermeldungen oder können Logs schreiben.
try:
a = 10 / 0
except ZeroDivisionError as e:
print(f"Ein Fehler ist aufgetreten: {e}")
Hier wird die Fehlermeldung im Objekt e
gespeichert und kann ausgegeben werden.
5. Verwendung des finally
-Blocks
Was ist finally
?
Der finally
-Block enthält Code, der immer ausgeführt wird – unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht. Er eignet sich z. B. zum Schließen von Dateien oder Aufräumen von Datenbankverbindungen.
try:
file = open("test.txt", "r")
except FileNotFoundError:
print("Datei nicht gefunden")
finally:
print("Dateizugriff abgeschlossen")
Ressourcen bereinigen
finally
ist besonders nützlich, um am Ende sicher Ressourcen freizugeben. Beispielsweise können Sie damit sicherstellen, dass eine Datei geschlossen wird:
try:
file = open("data.txt", "r")
# Dateioperationen
finally:
file.close()
So stellen Sie sicher, dass die Datei immer ordnungsgemäß geschlossen wird.
6. Auslösen von Ausnahmen mit raise
Funktion von raise
Mit der raise
-Anweisung können Sie als Entwickler Ausnahmen gezielt selbst auslösen. Dies ist sinnvoll, um z. B. fehlerhafte Eingaben explizit zu melden.
def check_value(value):
if value < 0:
raise ValueError("Negative Werte sind nicht erlaubt")
Beispiel für benutzerdefinierte Ausnahmen
Indem Sie für bestimmte Bedingungen gezielt Fehler auslösen, verhindern Sie ungewollte Programmzustände und erhöhen die Zuverlässigkeit.

7. Best Practices für Fehlerbehandlung in Python
1. Übermäßige Fehlerbehandlung vermeiden
Wenn Sie zu viele Fehler abfangen, leidet die Lesbarkeit und Wartbarkeit Ihres Codes. Nutzen Sie Fehlerbehandlung gezielt nur dort, wo tatsächlich Fehler zu erwarten sind, und nicht für den normalen Programmablauf.
2. Fehler per Logging dokumentieren
Wird eine Ausnahme abgefangen, sollten Sie die Fehlermeldung protokollieren. So lassen sich Ursachen später leichter nachvollziehen. Ein Beispiel mit dem logging
-Modul:
import logging
try:
a = 10 / 0
except ZeroDivisionError as e:
logging.error(f"Ein Fehler ist aufgetreten: {e}")
3. Zu breite except
-Anweisungen vermeiden
Fangen Sie Ausnahmen so spezifisch wie möglich ab. Breite Konstrukte wie except Exception
können wichtige Details verschleiern. Reagieren Sie daher auf bestimmte Fehlertypen gezielt und individuell.