Skip to content
Skip to the lesson
← RoadmapDay 6 of 90Foundationsstarts with 5 min · 2h 15m in all

Errors, exceptions, and reading a stack trace

By the end of today you can read a stack trace from the bottom up, name the line that actually failed, and say whether an error should be caught, allowed to crash, or fixed at its source.

YesterdayOn Day 4 you saw the call stack grow with each function call. A stack trace is that same stack, printed at the moment something broke.

TomorrowTomorrow you turn this into a method, so you can find bugs that do not announce themselves with an exception.

01

Why this matters

Most people scroll past stack traces looking for something familiar. A trace is a precise report of what happened, and reading it properly turns a ten-minute guess into a ten-second fix.

Exceptions
An object raised on failure that travels up the stack until caught.
Stack traces
The call stack printed at the moment something broke, read from the bottom.
Error handling
Catching specifically, and only where you can do something useful.
Failing fast
Crashing at the cause beats continuing in a state you no longer understand.
02

See it first

5 min

One small thing, worked through here before you go anywhere. Guess the answer before you open it.

A checkout breaks in production. This is the whole trace, exactly as it arrives in your logs.

Traceback (most recent call last):
  File "server.py", line 42, in handle_checkout
    receipt = build_receipt(cart)
  File "billing.py", line 118, in build_receipt
    total = apply_tax(cart.subtotal, cart.region)
  File "tax.py", line 7, in apply_tax
    return amount * RATES[region]
KeyError: 'NZ'

Before you read on: which file do you open, and what is actually wrong?

Decide before you open it. Being wrong here is the point.

Show me what happens

Open tax.py at line 7. The bug is that RATES has no entry for New Zealand. Read a trace from the bottom. The last line is what went wrong, and the block directly above it is where. Everything higher up is just the road that got you there, oldest call first, which is why the top line looks like the least useful line in the whole trace and usually is. KeyError also tells you the shape of the fix. It is not a crash in the tax code, it is missing data, and the real question is what should happen for a region nobody priced. Defaulting to zero tax silently undercharges every New Zealand order. Refusing the sale is honest. Either way it is a decision, not a typo.

Where you meet this at work

Scrolling to the top of a trace and opening your own file is the habit that turns a ten-second fix into an afternoon. Bottom line says what, block above says where, and the middle tells you which caller passed the bad value in.

03

Learn it

70 min

Copy this into Claude or ChatGPT. It quizzes you before it explains anything, which is deliberate. The resources under it are how you check what it told you.

Today's Master Prompt

Free · sign in

A prompt written for this day alone: your level, the exact scope, what to leave out, and an instruction to quiz you before it explains anything. Paste it into Claude or ChatGPT and it teaches you today's material.

Sign in to continueNo card, now or later.

Check it against something that is not a model

An assistant can be fluent and wrong, and on a topic you met today you will not catch it. These cover the same ground and were made by people who do this for a living, so they are what you hold the explanation up against. They are other people's work and we only link to them, so judge them for yourself.

4 hand-picked resources

Free · sign in

Videos, official docs and articles covering the same ground, each opened and annotated by hand. They are what you check the assistant against on a day you cannot yet catch it being wrong.

Sign in to continueNo card, now or later.
04

Build it

40 min

Deliberately cause five different exceptions: NameError, TypeError, KeyError, IndexError and ValueError. For each, copy the stack trace into a file and write one sentence naming the failing line and the cause. Then take one of them, catch it specifically, and decide honestly whether catching it improved anything.

05

Recall it

20 min

Answer out loud, reveal, then mark honestly whether you had it. That score is the only thing on this page you do not get to choose.

4 recall questions

Free · sign in

Questions you answer from memory, then grade yourself against the real answer. The score is carried into the mastery rating below it, so an honest miss cannot quietly become a tick.

Sign in to continueNo card, now or later.
06

Rate it

Finishing a day and understanding it are two different things, and this page counts them separately.

Mastery tracking

Free · sign in

Rate yourself against five named criteria per concept. Completion and mastery are tracked separately, and anything you rate shakily comes back automatically on a spaced schedule.

Sign in to continueNo card, now or later.
07

Recap

  • 01An exception travels up the call stack until something catches it
  • 02The bottom of a trace is where it broke; your lowest own line is usually the clue
  • 03Catch specific exceptions, and only when you can do something useful
  • 04Failing loudly at the cause beats failing quietly somewhere else

Your progress

Free · sign in

Mark days complete, pick up where you left off across devices, and watch completion and mastery diverge. Free, and the account exists only so ninety days of work cannot vanish with a cleared browser.

Sign in to continueNo card, now or later.