我期望debug-on-error
能够捕获大多数异常事件,并告诉我出了什么问题。 但是,使用 signal
代替error
的{{3}}并非如此。
json.el
警告不要使用debug-on-signal
和我的简短实验几乎证实了这一点 - 整个地方都有信号,所以我只能陷入{{1} } *发出信号以获得有用的信息。但我甚至无法解决这个问题。
我准备提交json-
的错误报告,但我觉得我可能会遗漏一些东西。 json.el
选择json.el
优先于signal
是否有充分的理由?
重新制作的步骤:
error
更实际的是,当您将输出从某些内容传递给(require 'json)
(setq debug-on-error t
debug-on-signal t) ; "json" ; '("json") ;; Still nothing
(json-read-from-string "")
(或其中一个便捷包装json-read
,json-read-from-string
,{时,您会遇到实际的现实问题{1}}等等,它不包含您的期望。
即使json-read-file
设置为json-read-object
,结果仍然是debug-on-signal
缓冲区中的以下文字,而不是其他内容:
t
没有任何关于错误来源或任何事情的迹象。 (在有类似问题的实际代码中,我看到*Messages*
只是稍微有点帮助。)
答案 0 :(得分:0)
事实上,debug-ignore-errors
的默认值包括end-of-file
,因此您必须删除它才能调试此特定问题。
(delete 'end-of-file debug-ignored-errors)
或者更现实
(let (debug-ignored-errors)
(json-something))
在debug-ignored-errors
来电期间暂时覆盖json-something
的值。
......然后你根本不需要debug-on-signal
。
所以我推测使用signal
代替error
导致问题行为被证明是错误的。