Zum Spiel · 12.09.2026
Zum Spiel: Fehler lesen
Tracebacks lesen statt fürchten: Fehlertyp, Zeile, Ursache — und try/except genau so weit, dass dein Programm nicht stirbt.
Fehlermeldungen werden dich nie verlassen — erfahrene Programmierer lesen jeden Tag welche. Der Unterschied zu Anfängern: Sie lesen sie in Sekunden und wissen sofort, was zu tun ist. Genau diese Fertigkeit baust du hier auf. Sie ist der Grundstein für alles Weitere: Wer den Traceback lesen kann, kann jede Übung, jedes Programm und später den Falkencode reparieren.
Anatomie eines Tracebacks
Ein Traceback ist der Weg, den Python aufgezeichnet hat, bis etwas schiefging. Beispiel — bewusst einen Fehler gemacht:
print("Du betrittst die Katakomben.")
gold = int("Schwert")Die Ausgabe sieht hart aus, ist aber eine Schatzkarte:
Traceback (most recent call last):
File "spiel.py", line 2, in <module>
gold = int("Schwert")
ValueError: invalid literal for int() with base 10: 'Schwert'- Ganz unten steht die Diagnose: Fehlertyp (
ValueError) und Beschreibung („invalid literal“ — der Text kann nicht in eine Zahl verwandelt werden). - Darüber steht der Ort: Datei (
spiel.py), Zeile (line 2) und die betroffene Zeile selbst. - Ganz oben steht „most recent call last“ — der letzte Aufruf. Bei langen Spuren liest man trotzdem unten an.
Das Vokabular der häufigsten Fehler
- NameError — der Name ist unbekannt: Tippfehler oder du hast die Variable noch nicht angelegt.
- TypeError — falsche Art von Wert:
"3" + 4(Text plus Zahl). - ValueError — richtiger Typ, unmöglicher Wert:
int("Schwert"). - SyntaxError — die Schreibweise ist kaputt (fehlender Doppelpunkt, Klammer). Kein Traceback: Das Programm startet gar nicht erst.
- KeyError / IndexError — du greifst auf einen Schlüssel oder Platz zu, den es nicht gibt.
- ZeroDivisionError — geteilt durch null.
Lerntrick: Notiere dir jeden neuen Fehlertyp auf einer Karteikarte — Typ, Bedeutung, wie er bei dir entstanden ist. Nach zwei Wochen erkennst du 95 % aller Probleme am ersten Wort.
try/except — das Sicherheitsnetz
Manchmal darf ein Fehler passieren: Der Spieler tippt „Viele!“ statt einer Zahl. Damit dann nicht das ganze Programm stirbt, fängst du den Fehler gezielt ein:
try:
menge = int(input("Wie viele Tränke? "))
except ValueError:
print("Das war keine Zahl — ich nehme 1.")
menge = 1
print("Du bekommst", menge, "Tränke.")Python versucht den try-Block. Passiert ein ValueError, springt es in den except-Zweig und läuft weiter. Zwei Regeln: Nenne den Fehlertyp — ein nacktes except: fängt auch deine Tippfehler ein und versteckt so echte Probleme. Und baue keine Ausnahme-Hierarchien — fängst du die drei üblichen Typen sauber ab, reicht das für Jahre.
Genau so arbeitet übrigens Falkenmoor: Tippt jemand Unsinn, antwortet die Engine höflich mit „Was meinst du mit …?“ statt abzustürzen. Hinter dem Stecken Prüfungen und abgefangene Fehler.
So übst du das
- Fehler-Karteikarten: Jeden neuen Fehlertyp mit eigenem Beispiel notieren.
- Archäologie: Nimm ein altes Programm, lösche wahllos Zeichen und übersetze die Meldungen.
- Sicherheitsnetz üben: Jede
int(input(...))-Stelle in ein try/except packen. - Alles läuft im Python Online-Interpreter — auch die Übungen unten.
Übungen
Übung 1 — Der Klassiker
Führe int("Schwert") aus. Welcher Fehlertyp liegt vor, und was sagt die Beschreibung? Erkläre es in einem Satz.
Musterlösung zeigen
int("Schwert")ValueError: invalid literal for int() with base 10: 'Schwert' — der Text beschreibt keine Zahl, also kann int() ihn nicht umwandeln.
Übung 2 — NameError jagd
Provoziere einen NameError, indem du print(gold) aufrufst, ohne gold vorher anzulegen. Was steht ganz unten?
Musterlösung zeigen
print(gold)
# NameError: name 'gold' is not definedÜbung 3 — Das Sicherheitsnetz
Baue try/except um int(input("Alter: ")) — bei Unsinn soll „Das war keine Zahl.“ erscheinen und 0 genutzt werden.
Musterlösung zeigen
try:
alter = int(input("Alter: "))
except ValueError:
print("Das war keine Zahl.")
alter = 0
print("Alter:", alter)Übung 4 — Das falsche Netz
Was passiert hier — und wie reparierst du es?
Musterlösung zeigen
try:
print(10 / 0)
except ValueError:
print("Ups")10 / 0 wirft einen ZeroDivisionError — das Netz fängt nur ValueError. Der Fehler fliegt durch. Richtig: except ZeroDivisionError: (oder einfach nicht durch null teilen).
Quiz — Teste dich
Erst überlegen, dann aufklappen — so trainiert es am meisten!
- Wo steht die eigentliche Ursache im Traceback?
- Was bedeutet
NameError? - Was wirft
"3" + 4? - Fängt
except ValueError:auch einenZeroDivisionError? - Fehlt bei
print("Halloein Anführungszeichen — bekommst du einen Traceback?
Quiz-Lösungen anzeigen
- Ganz unten: letzte Zeile = Fehlertyp + Beschreibung.
- Ein Name ist unbekannt — Tippfehler oder Variable wurde noch nicht angelegt.
- Einen
TypeError— Text und Zahl lassen sich nicht addieren. - Nein — except fängt nur den genannten (und Unter-)Typ.
- Nein — das ist ein
SyntaxError: Python startet gar nicht erst, die Meldung kommt ohne Traceback.
Mehr aus der Kategorie „Zum Spiel“
- Zum Spiel: Text und Befehle 12.09.2026
- Zum Spiel: Mehrere Dateien 12.09.2026
- Zum Spiel: JSON — die Welt als Daten 12.09.2026
- Drei Räume — dein erstes Textabenteuer 12.09.2026