Lerne, eine Fehlermeldung zu entschlüsseln, statt sie wegzuklicken: Typ, Datei, Zeile und Stack Trace.
Diese Lektion in Kodokon öffnenEin Fehler ist keine Strafe. Dein Computer urteilt nicht über dich und lacht dich nicht aus: Er stellt fest, dass er nicht weiß, was er tun soll, und sagt dir, warum. Das funktioniert genau wie ein Navi, das "Route wird neu berechnet" ansagt - das ist kein Vorwurf, das ist eine Information. Der Reflex von Anfängern ist, das rote Fenster zu schließen, ohne es zu lesen. Der Reflex von Entwicklern ist, es langsam und bis zum Ende zu lesen. Es ist oft der einzige Moment, in dem die Maschine in klaren Worten mit dir spricht.
Fast jede Fehlermeldung enthält dieselben Bausteine. Den Typ des Fehlers, der ihn einer großen Familie zuordnet. Die Meldung, die in einem Satz erklärt, was nicht stimmt. Die betroffene Datei und die Zeilennummer, die dir genau sagen, wo du nachschauen musst. Und manchmal einen Stack Trace: die Liste der Schritte, die das Programm durchlaufen hat, bevor es abgestürzt ist.
Traceback (most recent call last):
File "shopping.py", line 12, in <module>
total = price * quantity
NameError: name 'quantity' is not definedIm Beispiel oben steht bereits alles drin. Die Datei ist shopping.py, die Zeile ist die 12, der Typ ist NameError und die Meldung sagt name 'quantity' is not defined, also "der Name quantity ist nicht definiert". Im Klartext: In Zeile 12 benutzt du eine Variable quantity, die du nie angelegt hast oder deren Namen du falsch geschrieben hast. Keine komplizierte Ermittlung nötig - die Meldung enthielt die Antwort schon.
Einen Python-Stack-Trace liest man von unten nach oben: Die letzte Zeile nennt den Typ und die Erklärung, und direkt darüber stehen die Datei und die fehlerhafte Zeile. Wenn der Trace sehr lang ist, such die erste Zeile, die deine eigene Datei nennt. Zeilen, die auf unbekannte Dateien mit seltsamen Namen verweisen, gehören zu den Bibliotheken, die du benutzt: In 99 % der Fälle haben nicht sie einen Fehler, sondern die Art, wie du sie aufrufst.
Uncaught TypeError: Cannot read properties of
undefined (reading 'name')
at showProfile (app.js:24:18)
at start (app.js:41:3)Ein paar Formulierungen tauchen immer wieder auf, und es lohnt sich, sie zu erkennen. not defined bedeutet, dass der Name, den du benutzt hast, an dieser Stelle nicht existiert. undefined heißt, dass die Sache existiert, aber keinen Wert hat. unexpected zeigt an, dass das Programm etwas anderes erwartet hat, typischerweise eine vergessene Klammer oder ein vergessenes Anführungszeichen. permission denied weist auf ein Rechteproblem hin, nicht auf ein Code-Problem. Und no such file or directory bedeutet, dass der Pfad, den du geschrieben hast, ins Leere führt.
not defined normalerweise?