Python try except für kontrolliertes error-handling

Python try except behandelt Laufzeitfehler, damit das Programm mit einem Fallback weiterlaufen kann. Nutze es, wenn das Parsen von Benutzereingaben oder das Lesen einer Datei fehlschlagen kann, der Rest aber weiterlaufen soll. Wichtig ist, nur die riskanten Zeilen zu kapseln, die erwartete Exception zu fangen und einen sicheren Default zu setzen.

Python Try Except-Beispiel Für Fehlerbehandlung

Ausgabe:

Die Ausgabe erscheint hier...

Ausgabe:

0

So Funktioniert Dieses Beispiel

  • Der try-Block versucht, den Text in eine Ganzzahl zu konvertieren.
  • Wenn int() fehlschlägt, setzt der except ValueError-Block einen Fallback-Wert.
  • Das print läuft nach dem Block, sodass das Skript immer eine brauchbare Zahl ausgibt.
  • Die Ausgabe zeigt den Fallback-Pfad und beweist, dass der Fehler abgefangen wurde statt abzustürzen.

Häufige fehler mit Python try except

Fehler 1: Alles mit einem nackten except abfangen.

try:
    total = int(text)
except:
    total = 0
try:
    total = int(text)
except ValueError:
    total = 0

Warum das passiert: Ein nacktes except fängt systembeendende Fehler wie KeyboardInterrupt und SystemExit, was Programme schwerer zu stoppen und zu debuggen macht. Nutze die spezifische Exception, die du erwartest.

Fehler 2: Zu viel Code in try packen und damit unzusammenhängende Bugs verstecken.

total = 10

try:
    count = int(text)
    ratio = total / count
except Exception:
    ratio = 0
total = 10

try:
    count = int(text)
except ValueError:
    ratio = 0
else:
    ratio = total / count

Warum das passiert: Breite Handler können Fehler von Zeilen verbergen, die eigentlich laut scheitern sollten. Der else-Block läuft nur, wenn keine Exception auftritt, sodass unerwartete Bugs nicht geschluckt werden.

Fehler 3: except-Blöcke von breit nach spezifisch anordnen.

try:
    count = int(text)
except Exception:
    count = 0
except ValueError:
    count = 0
try:
    count = int(text)
except ValueError:
    count = 0
except Exception:
    count = 0

Warum das passiert: Python nimmt den ersten passenden Handler, daher macht ein breiter Exception-Block zuerst den spezifischen unerreichbar.

Performance-Überlegungen

Ein try-Block ohne Exception ist effizient, aber Exceptions auszulösen und zu fangen ist relativ teuer. Wenn Fehler im Normalfluss erwartet werden, kann ein einfacher Vorab-Check (z. B. Eingabevalidierung) schneller und klarer sein. Wenn Fehler wirklich außergewöhnlich sind, halten try und except den Happy Path lesbar ohne spürbaren Performance-Kosten.

Wann du try except verwenden solltest

  • Nutze es, wenn eine Operation fehlschlagen kann und du einen sicheren Fallback hast (Text parsen, Datei lesen oder API aufrufen).
  • Nutze es, um Batch-Arbeit am Laufen zu halten, indem du fehlerhafte Elemente überspringst und den Fehler loggst.
  • Halte den try-Block eng, damit nur die riskante Zeile geschützt ist und andere Bugs weiterhin sichtbar werden.
  • Vermeide es, wenn Fehler der Normalfall sind und eine einfache Bedingung günstiger und klarer ist.
  • Vermeide das Abfangen von BaseException oder einem generischen Exception, außer du wirfst erneut oder loggst mit Absicht.