CL_CATCH_ALL — Create a protected region.

C Macro

  cl_env_ptr env = ecl_process_env();
     * Code that is protected. Uncaught lisp conditions, THROW,
     * signals such as SIGSEGV and SIGBUS may cause jump to
     * this region.
     * If the exception, lisp condition or other control transfer
     * is caught, this code is executed.
   * In all cases we exit here.


This is a set of three macros that create an UNWIND-PROTECT region that prevents any nonlocal transfer of control to outer loops. In the Lisp speak, the previous code is equivalent to

(block nil
        ;; Code that is protected
    (return nil)))

As explained in CL_UNWIND_PROTECT,it is normally advisable to set up an unwind-protect frame to avoid the embedded lisp code to perform arbitary transfers of control.

See also