Ein roter Text um 9 Uhr
Es ist Ihr dritter Arbeitstag. Das Programm der Kasse bricht ab und druckt viele Zeilen in roter Schrift.
Die meisten Neulinge erschrecken und rufen sofort jemanden an. Erfahrene Fachleute lesen erst die Meldung.
In dieser Lektion lernen Sie, wo in diesem Text die Antwort steht.
Am Ende dieser Lektion
Notiz
Ich kann eine Fehlermeldung lesen und die Lösung finden.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Fehlermeldung | der Text, mit dem ein Programm sagt, was schiefging |
| Traceback | die Liste der Stellen im Code, die zum Fehler geführt haben |
| Dokumentation | die Anleitung zu einem Werkzeug, geschrieben von seinen Autoren |
| Suchbegriff | die Wörter, die Sie in eine Suchmaschine tippen |
| SSH | ein Weg, sich über das Netz sicher in einem Terminal auf einem Server anzumelden |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Lesen Sie von unten nach oben
Ein Traceback ist lang, aber nur wenige Zeilen sind wichtig.
Die letzte Zeile nennt die Art des Fehlers und was los war. Hier: KeyError: 'Kuchen'.
Die Zeilen darüber zeigen den Weg dorthin. Die Zeile direkt über dem Fehler nennt die Stelle, an der es krachte.
Ein Traceback (nur zum Lesen)
Traceback (most recent call last):
File "kasse.py", line 16, in <module>
print(summe(["tee", "Kuchen"]))
File "kasse.py", line 11, in summe
gesamt = gesamt + preis_von(name)
File "kasse.py", line 5, in preis_von
return preise[name]
KeyError: 'Kuchen'
Beispiel: Das Traceback gelesen
| Zeile des Tracebacks | Was sie Ihnen sagt |
|---|---|
| KeyError: 'Kuchen' | Der Schlüssel Kuchen fehlt im Wörterbuch |
| return preise[name] | Hier wird im Wörterbuch nachgeschlagen |
| File "kasse.py", line 5 | In Datei kasse.py, Zeile 5 |
| in preis_von | Innerhalb der Funktion preis_von |
| print(summe(...)) | So kam das Programm dorthin |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Den Fehler selbst auslösen
preise = {"tee": 2.5, "kuchen": 3.0}
def preis_von(name):
return preise[name]
def summe(namen):
gesamt = 0
for name in namen:
gesamt = gesamt + preis_von(name)
return gesamt
# Das Wort "Kuchen" ist großgeschrieben, der Schlüssel nicht.
print(summe(["tee", "Kuchen"]))
Ein häufiger Fehler
Warnung
Viele lesen nur die erste Zeile oder gar nichts und raten. Das kostet Zeit. Lesen Sie die letzte Zeile langsam und ganz. Meistens steht dort schon, was fehlt.
Die Lösung suchen
Kopieren Sie die letzte Zeile der Meldung in eine Suchmaschine. Lassen Sie Namen weg, die nur Ihr Projekt kennt.
Suchen Sie KeyError Python, nicht KeyError Kuchen kasse.py. Fremde Seiten kennen Ihre Namen nicht.
Lesen Sie danach zuerst die Dokumentation des Werkzeugs. Sie ist verlässlicher als ein alter Forumsbeitrag.
Die Lösung ausprobieren
preise = {"tee": 2.5, "kuchen": 3.0}
def preis_von(name):
return preise[name.lower()]
def summe(namen):
gesamt = 0
for name in namen:
gesamt = gesamt + preis_von(name)
return gesamt
print(summe(["tee", "Kuchen"]))
Eine gute Frage stellen
Kommen Sie nicht weiter, fragen Sie Ihr Team. Eine gute Frage spart allen Zeit.
Nennen Sie, was Sie wollten, was geschah und die Fehlermeldung als Text, nicht als Foto. Sagen Sie, was Sie schon versucht haben.
Kurz gesagt: Ziel, Fehler, Versuche. Dann kann man Ihnen gezielt helfen.
Beispiel: Zwei Fragen im Vergleich
| Schwache Frage | Gute Frage |
|---|---|
| „Die Kasse geht nicht.“ | „Die Kasse bricht beim Aufruf von summe mit KeyError: 'Kuchen' ab.“ |
| Ein Foto vom Bildschirm | Die Meldung als Text, mit der Zeilennummer |
| Kein Wort zu Versuchen | „Ich habe geprüft, dass der Schlüssel kleingeschrieben im Wörterbuch steht.“ |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Fehler auf einem Server finden
Viele Fehler zeigen sich erst auf einem Server. Dorthin kommen Sie meist mit SSH.
Der Befehl dafür heißt ssh name@server. Ihr Team gibt Ihnen den Namen und die Zugangsdaten.
Dort nutzen Sie, was Sie in dieser Lektion und in „Textdateien lesen und durchsuchen“ gelernt haben: Protokolle lesen und mit grep suchen.
Was ein Team erwartet
Tipp
Niemand erwartet, dass Sie jeden Fehler kennen. Man erwartet, dass Sie die Meldung lesen, kurz suchen und dann eine klare Frage stellen.