summaryrefslogtreecommitdiffstats
path: root/txr.1
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-02-06 06:22:51 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-02-06 06:22:51 -0800
commit3286f2ca94da081bca5ddeffdfcc6ec92adf237c (patch)
treebfd61ea966ecf4d7094cd2e1a4178b6b996f64c9 /txr.1
parent30c008e52d3c911ff6315c22633fbfec34487003 (diff)
downloadtxr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.tar.gz
txr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.tar.bz2
txr-3286f2ca94da081bca5ddeffdfcc6ec92adf237c.zip
* unwind.c (unhandled_hook_s): New static variable.
(uw_throw): In the unhandled case, check if *unhandled-hook* variable has a function, and use it instead of the default logic. If it's not a function, abort with an error message. Clear it so that if the hook function re-enters this code, it will not be used. Always exit now on unhandled exceptions; do not abort. (uw_late_init): New function. * unwind.h (uw_late_init): Declared. * lib.c (init): Call uw_late_init. * txr.1: Documented *unhandled-hook*. * genvim.txr: Scan the unwind.c file, since it has a reg_var now. * tl.vim, txr.vim: Updated.
Diffstat (limited to 'txr.1')
-rw-r--r--txr.141
1 files changed, 41 insertions, 0 deletions
diff --git a/txr.1 b/txr.1
index 10046d54..ae95b9d7 100644
--- a/txr.1
+++ b/txr.1
@@ -19574,6 +19574,47 @@ operator, and the functions
and
.codn error .
+.coNP Variable @ *unhandled-hook*
+
+The
+.code *unhandled-hook*
+variable is initialized with
+.code nil
+by default.
+
+It may instead be assigned a function which is capable of taking
+three arguments.
+
+When an exception occurs which has no handler, this function is called,
+with the following arguments: the exception type symbol, the exception object,
+and a third value which is either
+.code nil
+or else the form which was being evaluated the exception was thrown.
+
+Otherwise, if the variable is
+.code nil
+some informational messages are printed about the exception, and the process
+exits with a failed termination status.
+In the same situation, if the variable contains an object which is not a
+function, the process aborts.
+
+Prior to the function being called, the
+.code *unhandled-hook*
+variable is reset to
+.codn nil .
+
+If the function registered in
+.code *unhandled-hook*
+returns, the process exits with a failed termination status.
+
+Note: the functions
+.code source-loc
+or
+.code source-loc-str
+may be applied to the third argument of the
+.code *unhandled-hook*
+function to obtain more information about the form.
+
.SS* Regular Expression Library
.coNP Functions @ search-regex and @ range-regex
.synb