In Python können beim Programmieren Fehler auftreten, z. B. durch falsche Eingaben, fehlende Dateien oder unerwartete Daten. In Data Science ist das besonders relevant, da Datensätze unvollständig oder fehlerhaft sein können. Mit Fehlerbehandlung und Exceptions wird dein Code robust, stabil und sicher.
1. Was sind Exceptions?
Eine Exception ist ein Fehler, der während der Programmausführung auftritt. Python unterscheidet zwischen:
- SyntaxError – z. B. falsche Schreibweise
- TypeError – falscher Datentyp
- ValueError – ungültiger Wert
- FileNotFoundError – Datei nicht gefunden
- ZeroDivisionError – Division durch Null
x = 10
y = 0
print(x / y) # ZeroDivisionError
2. Fehler abfangen: try und except
Mit try und except kannst du potenzielle Fehler abfangen, sodass das Programm nicht abstürzt.
try:
zahl = int(input("Gib eine Zahl ein: "))
ergebnis = 10 / zahl
print(ergebnis)
except ZeroDivisionError:
print("Fehler: Division durch Null ist nicht erlaubt!")
except ValueError:
print("Fehler: Bitte eine gültige Zahl eingeben!")
try– der Block, der fehleranfällig istexcept– der Block, der den Fehler behandelt
3. Allgemeine Exceptions
Man kann auch alle Fehler abfangen, wenn der Typ nicht vorhersehbar ist:
try:
wert = int("abc")
except Exception as e:
print(f"Ein Fehler ist aufgetreten: {e}")
eenthält die Fehlermeldung- Vorsicht: Allgemeine Exceptions sollten sparsam genutzt werden, um Fehler nicht zu verschleiern
4. else-Block
Der else-Block wird nur ausgeführt, wenn kein Fehler auftritt:
try:
zahl = int(input("Zahl: "))
except ValueError:
print("Ungültige Eingabe!")
else:
print(f"Die Zahl ist {zahl}")
5. finally-Block
Der finally-Block wird immer ausgeführt, egal ob ein Fehler aufgetreten ist oder nicht.
Ideal für das Aufräumen von Ressourcen, z. B. Dateien oder Datenbankverbindungen.
try:
datei = open("daten.csv", "r")
inhalt = datei.read()
except FileNotFoundError:
print("Datei nicht gefunden!")
finally:
print("Programmende")
try:
datei.close()
except:
pass
6. Eigene Exceptions
Du kannst eigene Fehler definieren, um spezielle Bedingungen abzufangen.
class AlterZuNiedrigError(Exception):
pass
alter = 15
if alter < 18:
raise AlterZuNiedrigError("Person ist zu jung!")
raiselöst eine Exception aus- Ideal, um business-spezifische Regeln zu implementieren
7. Praxisbeispiel: Daten einlesen
Angenommen, wir haben eine CSV-Datei, die fehlende Werte oder falsches Format enthalten könnte:
import pandas as pd
try:
df = pd.read_csv("kunden.csv")
print(df.head())
except FileNotFoundError:
print("Fehler: Datei existiert nicht!")
except pd.errors.EmptyDataError:
print("Fehler: Datei ist leer!")
except pd.errors.ParserError:
print("Fehler: Datei konnte nicht geparst werden!")
else:
print("Daten erfolgreich geladen!")
finally:
print("Datenverarbeitung abgeschlossen")
8. Kombination von Bedingungen und Exceptions
try:
alter = int(input("Gib dein Alter ein: "))
if alter < 0:
raise ValueError("Alter kann nicht negativ sein!")
elif alter < 18:
print("Minderjährig")
else:
print("Volljährig")
except ValueError as e:
print(f"Fehler: {e}")
- Kombination von if-Bedingungen und eigener Fehlerbehandlung
- Besonders nützlich, wenn Benutzereingaben geprüft werden müssen
9. Tipps für Data Science
- Fehler immer abfangen, wenn Daten aus externen Quellen kommen
- Spezifische Exceptions verwenden – nicht nur
Exception - Ressourcen immer freigeben (Dateien, Datenbanken) mit
finallyoderwith - Eigene Exceptions für business-spezifische Regeln
- Logging – Fehler protokollieren, um sie später nachzuvollziehen
With-Statement für Ressourcen
try:
with open("daten.csv", "r") as f:
inhalt = f.read()
except FileNotFoundError:
print("Datei nicht gefunden!")
withstellt sicher, dass die Datei automatisch geschlossen wird
10. Praxisbeispiel: Validierung von Benutzereingaben
def eingabe_int(prompt):
while True:
try:
wert = int(input(prompt))
if wert < 0:
raise ValueError("Wert darf nicht negativ sein")
return wert
except ValueError as e:
print(f"Fehler: {e}")
alter = eingabe_int("Gib dein Alter ein: ")
print(f"Alter akzeptiert: {alter}")
- Endlosschleife fragt solange, bis gültige Eingabe erfolgt
- Kombiniert Schleifen, Bedingungen und Exceptions
Schreibe einen Kommentar