SRFI-18 exceptions are identical to the exceptions provided by Guile’s implementation of SRFI-34. The behavior of exception handlers invoked to handle exceptions thrown from SRFI-18 functions, however, differs from the conventional behavior of SRFI-34 in that the continuation of the handler is the same as that of the call to the function. Handlers are called in a tail-recursive manner; the exceptions do not “bubble up”.
Returns the current exception handler.
Installs handler as the current exception handler and calls the procedure thunk with no arguments, returning its value as the value of the exception. handler must be a procedure that accepts a single argument. The current exception handler at the time this procedure is called will be restored after the call returns.
Raise obj as an exception. This is the same procedure as the same-named procedure defined in SRFI 34.
Returns #t
if obj is an exception raised as the result of
performing a timed join on a thread that does not exit within the
specified timeout, #f
otherwise.
Returns #t
if obj is an exception raised as the result of
attempting to lock a mutex that has been abandoned by its owner thread,
#f
otherwise.
Returns #t
if obj is an exception raised as the result of
joining on a thread that exited as the result of a call to
thread-terminate!
.
uncaught-exception?
returns #t
if obj is an
exception thrown as the result of joining a thread that exited by
raising an exception that was handled by the top-level exception
handler installed by make-thread
. When this occurs, the
original exception is preserved as part of the exception thrown by
thread-join!
and can be accessed by calling
uncaught-exception-reason
on that exception. Note that
because this exception-preservation mechanism is a side-effect of
make-thread
, joining on threads that exited as described above
but were created by other means will not raise this
uncaught-exception
error.