这个javascript代码如何使用elisp写入throw / catch错误?
throw new Error("Boom!!!")
catch(error){
console.log(err.stack)
}
答案 0 :(得分:2)
Emacs Lisp区分条件,一个高级别的面向对象的构造,以及非本地退出,这是一个允许过早退出作用域的低级构造。
使用condition-case
:
(condition-case nil
(error "Error!")
(error (message "Caught error")))
使用catch
处理非本地存在:
(progn
(catch 'catcher
(throw 'catcher 42))
(message "Caught .. or perhaps not"))
一般情况下,如果您想参加Emacs'错误处理协议,如果您只需要提前退出,请catch
/ throw
。
为了计算回溯,您可以使用函数backtrace
:
(catch 'catcher
(throw 'catcher
(with-temp-buffer
(backtrace)
(buffer-string))))
答案 1 :(得分:1)