diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-07-17 05:14:36 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-07-17 05:14:36 -0700 |
commit | 9cd58d83904fc531f214c3bc2f506c80d816f415 (patch) | |
tree | 684e06ff303a82a24a51f8af46a52e7fd0a86e55 /txr.1 | |
parent | dd00993b995dc84b2dcff1e6d1236df3e6b040b0 (diff) | |
download | txr-9cd58d83904fc531f214c3bc2f506c80d816f415.tar.gz txr-9cd58d83904fc531f214c3bc2f506c80d816f415.tar.bz2 txr-9cd58d83904fc531f214c3bc2f506c80d816f415.zip |
doc: add an implementation note for exceptions.
* txr.1: Add remarks on the differences between how TXR Lisp
and ANSI CL deal with unhandled exceptions/conditions of type
error and warning.
Diffstat (limited to 'txr.1')
-rw-r--r-- | txr.1 | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -42602,6 +42602,30 @@ may invoke a particular restart handler. Restart handlers are similar to exception handlers: they are functions associated with symbols in the dynamic environment. +In \*(TL, the special behavior which occurs for exceptions derived from +.code error +and those from +.code warning +is built into the exception handling system, and tied to those types. +When an error or warning exception is unhandled, the exception handling system +itself reacts, so the special behaviors occur no matter how these exceptions +are raised. In ANSI CL, the special behavior for unhandled +.code error +conditions (of invoking the debugger) is implemented only in the +.code error +function; +.code error +conditions signalled other than via that function are not subject to +any special behavior. There is a parallel situation with regard to +warnings: the +ANSI CL +.code warn +function implements a special behavior for unhandled warnings (of emitting +a diagnostic) but warnings not signalled via that function are not +treated that way. +Thus in \*(TL, there is no way to raise an error or warning that is simply +ignored due to being unhandled. + In \*(TL exceptions are a unification of conditions and restarts. From an ANSI CL perspective, \*(TL exceptions are a lot like CL restarts, except that the symbols are arranged in an inheritance hierarchy. \*(TL exceptions are used |