Se um erro é sinalizado no código Emacs Lisp, e debug-on-error
é t
, eu recebo um buffer de rastreamento que faz com que seja fácil de descobrir onde o erro ocorreu. No entanto, para erros que ocorrem durante o processamento de uma resposta da rede de forma assíncrona, seria irritante ter o buffer de backtrace pop-up, então prefiro capturar o erro condition-case
e registrá-lo.
Então, quando estou lidando com um erro condition-case
, existe uma maneira de obter acesso ao backtrace no ponto do erro? Chamar a backtrace
função obtém o retorno do código dentro do manipulador, o que não é o que estou procurando.
(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
geraria o rastreamento de pilha e o anexaria ao erro gerado.
magithub-error
função faz algo semelhante a isso, eu acho, mas não estou em um computador no momento. Pode ajudar de qualquer maneira.