Если сигнализируется ошибка в коде Emacs Lisp, и debug-on-error
это t
, я получаю трассировку буфер , который позволяет легко выяснить , где произошла ошибка. Однако, для ошибок, возникающих при асинхронной обработке ответа от сети, было бы неприятно иметь всплывающий буфер обратной трассировки, поэтому я бы предпочел перехватить ошибку condition-case
и записать ее в журнал.
Итак, когда я обрабатываю ошибку в condition-case
, есть ли способ получить доступ к обратному следу в точке ошибки? Вызов backtrace
функции возвращает след кода в обработчике, а это не то, что я ищу.
(condition-case e
(do-something-that-might-fail)
(error
(message "%s"
;; This gets the wrong backtrace!
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace)
(buffer-string))))))
do-something-that-might-fail
сгенерировать трассировку стека и прикрепить ее к возникающей ошибке.
magithub-error
Я думаю, что моя функция похожа на эту, но сейчас я не за компьютером. Это может помочь независимо.