Document every error code a script can see, as chapter 15
ER# held numbers nothing explained. The appendix lists the four error classes the interpreter prints, the eight codes it owns and what raises each, and the codes that reach ER# from errno, libakerror and libakgl underneath it. The table is not asserted. A program in the chapter trips seven of the eight and prints what it got, and docs_examples byte-compares the result -- so the numbers are checked rather than claimed. The eighth, 516, is not usefully trappable and the chapter says why: entering a handler takes a scope, and the pool being empty is what raised it. Two things worth a reader's attention came out of writing it. Two codes register the same ERR() text, so a program must compare the number and print the text. And VAL reports libakerror's Value Error rather than the interpreter's 517, which makes that number the platform's rather than ours -- filed as section 6 item 21, not fixed here, because deciding which libakstdlib failures to translate is a boundary question and ENOENT out of DOPEN is the counter-case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -231,6 +231,11 @@ Two variables are set when the trap fires: **`ER#`** is the error code and **`EL
|
||||
the line it happened on. `ERR(ER#)` gives the message text. On a C128 these are called
|
||||
`ER` and `EL` with no suffix; this dialect has no bare variable names.
|
||||
|
||||
**[Chapter 15](15-error-codes.md) is the complete list** of what `ER#` can hold and
|
||||
what each code means. The short version is that the interpreter's own codes are 512 to
|
||||
519 and are the only numbers worth comparing against; two codes render as the same
|
||||
`ERR()` text, so compare the number rather than the text.
|
||||
|
||||
`RESUME` comes in three forms:
|
||||
|
||||
| Form | Where it goes |
|
||||
|
||||
Reference in New Issue
Block a user