The libscheme library provides rudimentary error handling
support. Errors are signaled using the scheme_signal_error()
function, or by failing the assertion in a SCHEME_ASSERT()
expression. If the default error handler is installed by calling
scheme_default_handler(), then all uncaught errors will print
the error message and abort(). Errors can be caught by
evaluating an expression within a SCHEME_CATCH_ERROR() form.
This macro evaluates its first argument. If an error occurs during
the execution, the value second argument is returned, otherwise, the
value of the first expression is returned.
obj = scheme_read (stdin);
result = SCHEME_CATCH_ERROR (scheme_eval (obj, env), 0);
if (result == 0)
{
/* error handling code */
}
else
{
scheme_write (stdout, result);
}