在 elisp 中尝试捕获和打印跟踪
Try-catch and print trace in elisp
这个 javascript 代码示例如何使用 elisp 编写的 throw/catch 错误?
throw new Error("Boom!!!")
catch(error){
console.log(err.stack)
}
您可以使用:
(condition-case ex
(error "Boom!!")
('error (backtrace)))
提供了有关在 Emacs 中处理错误的更多信息here。
Emacs Lisp 区分 conditions,一个高级的面向对象构造,和 non-local exits,一个低级的允许提前退出作用域的构造。
使用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))))
这个 javascript 代码示例如何使用 elisp 编写的 throw/catch 错误?
throw new Error("Boom!!!")
catch(error){
console.log(err.stack)
}
您可以使用:
(condition-case ex
(error "Boom!!")
('error (backtrace)))
提供了有关在 Emacs 中处理错误的更多信息here。
Emacs Lisp 区分 conditions,一个高级的面向对象构造,和 non-local exits,一个低级的允许提前退出作用域的构造。
使用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))))