Guile provides an implementation of SRFI-34’s exception handling mechanisms as an alternative to its own built-in mechanisms (see Exceptions). It can be made available as follows:
(use-modules (srfi srfi-34))
See Raising and Handling Exceptions, for more on
with-exception-handler
and raise
(known as
raise-exception
in core Guile).
SRFI-34’s guard
form is syntactic sugar over
with-exception-handler
:
Evaluate body with an exception handler that binds the raised object to var and within the scope of that binding evaluates clause… as if they were the clauses of a cond expression. That implicit cond expression is evaluated with the continuation and dynamic environment of the guard expression.
If every clause’s test evaluates to false and there is no
else
clause, then raise
is re-invoked on the raised object
within the dynamic environment of the original call to raise
except that the current exception handler is that of the guard
expression.