The macro catching-java-exceptions
executes body with a catch for Java exceptions. The code of body is executed normally, and if no Java exception is signaled through the execution, returns whatever body returns. If there is an exception, instead of signaling an error of class java-exception, catching-java-exceptions
returns two values: nil
and the Java exception object (analogous to cl:ignore-errors
).
The macro catching-exceptions-bind
executes the form and binds result and exception to the first two return values if there was no exception. If there was an exception they are bound to nil
and the exception. It then executes the code of body within the scope of the bind. catching-exceptions-bind
is equivalent to
(multiple-value-bind (result exception)
(catching-java-exceptions form)
body)
try
in Java code does). These macros do not affect the behavior for these cases, so even though when running under a Java debugger you may see an exception, it will not necessarily be visible with these macros. catching-java-exceptions
) or form (for catching-exceptions-bind
). They should normally be used in low-level code that actually does Java calls, with any Lisp error handlers wrapped around them.cl:handler-case
, cl:handler-bind
), for java-exception and its subclasses. LispWorks User Guide and Reference Manual - 13 Feb 2015