What an Error Message Is Actually Telling You
Here's the moment this guide is for: you run your code, and instead of working, the screen fills with red text. Your stomach drops. The words look like an accusation, or a wall of nonsense, and the instinct is to either retype the command and hope, or paste the whole thing somewhere and beg.
Stop. That red text is the single most helpful thing you'll see all day. An error message is the computer telling you - usually with surprising precision - exactly what it tried to do, where it gave up, and often why. The people who look like wizards aren't smarter than you; they just learned to read the message instead of fearing it. That's a learnable skill, and it's the "A" of debugging. By the end of this guide, errors will feel less like a slammed door and more like a note left on the fridge.
How to read this
- Mid-meltdown right now? Jump to the cheat-card at the top of Phase 3: What to Actually Do With One - symptom on the left, your first move on the right.
- Want it to finally make sense? Read in order. Each phase builds on the last: first what an error is, then the families you'll keep meeting, then the calm method for working through any of them.
The phases
- An Error Is Information, Not an Insult - the reframe, plus the anatomy of a typical error: its type, its message, and its location. Annotated, in two languages.
- The Common Error Families - the handful you'll meet constantly: syntax vs runtime, null/undefined, type mismatches, not-found, and permission denied. What each usually means.
- What to Actually Do With One - the calm method: read it literally, find your line, reproduce it small, search the exact message, and when to rubber-duck. With a cheat-card.
This guide is about reading a single error. When one error comes with a long, multi-line trail of file names and line numbers, that's a stack trace - its own skill, covered in Reading a Stack Trace.