Wenn Code bricht
Eine Anleitung für den Moment, in dem das Programm nicht das tut, was du wolltest — also fast immer.
In dem Moment, in dem dein Code zum ersten Mal eine Wand aus rotem Text erzeugt, ist dein erster Instinkt: Panik. Aber dieser rote Text, der Traceback, ist eigentlich das Hilfreichste, was Python dir geben kann. Er sagt dir genau, was schiefgelaufen ist, genau wo und genau warum.
Die echte Gefahr lauert nicht, wenn Python dich anschreit, sondern wenn Python schweigt und deine Ergebnisse leise, unauffällig falsch sind. Dieser Artikel bringt dir bei, Python-Fehler in drei Typen einzuteilen, Tracebacks wie ein Detektiv zu lesen und Sicherheitsnetze zu schreiben, die dein Programm am Laufen halten.
Drei Arten von Fehlern
Fehlerarten in Python
Die Rezept-Analogie bricht an zwei Stellen: Ein echter Koch würde "200 Kilogramm Salz" hinterfragen, er hat gesunden Menschenverstand. Python hat keinen Menschenverstand und führt jede logisch gültige Anweisung aus. Außerdem kann ein Koch das Ergebnis probieren, Code dagegen braucht systematische Tests.
Drei Fehler, ein Programm
Kein Fehler heißt nicht kein Problem
Den Traceback lesen: Deine Fehlerkarte
Traceback
Die Analogie bricht an einer wichtigen Stelle: Ein echter Unfallbericht ist chronologisch von oben nach unten aufgebaut. Pythons Traceback zeigt den neuesten Aufruf ganz unten ("most recent call last"). Deshalb muss man lernen, von unten nach oben zu lesen.
Traceback lesen: 4 Schritte
Ein Traceback in der Praxis
Nicht einfach drauflos ändern
Fehlerbehandlung: Sicherheitsnetze schreiben
Exception Handling (try/except)
Die Analogie bricht, weil ein Springer nur einen Reservefallschirm hat, Python aber mehrere except-Blöcke für verschiedene Fehlertypen erlaubt, wie separate Reserveschirme für verschiedene Ausfallarten.
Der try/except-Ablauf
Praxis: Robuste Eingabe
except: pass ist gefährlich
Vertiefung: Häufige Python-Exceptions
Vertiefung: Debugging-Strategien ohne Traceback
Interaktiv: Was ist mein Fehler?
Beantworte die Fragen im Diagnosebaum, um herauszufinden welcher Fehlertyp vorliegt und welche Debugging-Strategie am besten hilft. Achte darauf, wie die drei Fehlerarten zu unterschiedlichen Lösungswegen führen.
Was passiert wenn du deinen Code ausführst?
Das Wichtigste auf einen Blick
Quiz: Debugging
Checkpoint: Hast du alles verstanden?
- Dein Code läuft ohne Fehlermeldung, gibt aber 0 statt 100 aus. Was für ein Fehlertyp ist das, und warum ist er besonders gefährlich?
- Du siehst einen Traceback, dessen letzte Zeile "KeyError: 'name'" lautet. Wo schaust du zuerst hin, und was verraten dir die Zeilen darüber?
- Schreibe Code, der den Nutzer nach einer Zahl fragt und so lange nachfragt, bis eine gültige Eingabe kommt. Warum ist except: pass hier keine gute Lösung?