How can this javascript code sample for throw/catch error written using elisp?
throw new Error("Boom!!!")
catch(error){
console.log(err.stack)
}
Emacs Lisp distinguishes between conditions, a high-level object-oriented construct, and non-local exits, a low-level construct that allows exiting a scope prematurely.
Conditions are captured using condition-case
:
(condition-case nil
(error "Error!")
(error (message "Caught error")))
Non-local exists are handled using catch
:
(progn
(catch 'catcher
(throw 'catcher 42))
(message "Caught .. or perhaps not"))
In general, you should use conditions if you wish to participate in Emacs' error handling protocols, and catch
/throw
if you only need to exit prematurely.
In order to compute a backtrace, you may use the function backtrace
:
(catch 'catcher
(throw 'catcher
(with-temp-buffer
(backtrace)
(buffer-string))))