How to reason about it
- E300–E340 cover unbound names, application, arity, assignment, pair/range/type/numeric faults, value contexts, letrec, user errors, exception flow, and stale escapes.
- E1xx belongs to reader/static normalization; W2xx/W3xx belongs to ordered warnings.
- ResourceLimit is deliberately outside catchable E3xx and is reported as its own outcome.
Stable runtime codes
| Code | Condition | Phase / catchability |
|---|---|---|
| E300 / E303 | unbound read / set! of unbound name | runtime / catchable |
| E301 / E302 | non-procedure application / arity mismatch | runtime / catchable |
| E310 / E311 / E312 | pair-list domain / range-index / primitive type | runtime / catchable |
| E313 / E314 | division by zero / non-finite production | runtime / catchable |
| E320 / E321 | value-count misuse / uninitialized letrec read | runtime / catchable |
| E330 / E331 / E332 | user error / uncaught raise / non-continuable handler return | runtime / signal-specific |
| E340 | escape continuation no longer active | runtime / catchable fault after consumption |
| W330 | deprecated % call; prefer modulo | runtime warning / once per source call site |
| W331 | deprecated list-first or list-rest call; prefer first or rest | runtime warning / once per source call site |
| ResourceLimit | declared recursion/resource ceiling | resource / not catchable as E3xx |
A common mistake
Codes are stable contracts only where the runtime SSOT pins them.
Keep going
Use this page while writing code. For a guided explanation, return to the syntax map or the corresponding manual.