Se viene segnalato un errore nel codice Lisp di Emacs, ed debug-on-error
è t
, ottengo un buffer di backtrace che rende facile capire dove si è verificato l'errore. Tuttavia, per gli errori che si verificano durante l'elaborazione asincrona di una risposta dalla rete, sarebbe fastidioso far apparire il buffer backtrace, quindi preferirei catturare l'errore condition-case
e registrarlo.
Quindi, quando sto gestendo un errore condition-case
, c'è un modo per ottenere l'accesso al backtrace nel punto dell'errore? Chiamare la backtrace
funzione ottiene il backtrace del codice all'interno del gestore, che non è quello che sto cercando.
(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
generato stack-trace e allegarlo all'errore che genera.
magithub-error
Penso che la mia funzione faccia qualcosa di simile a questo, ma al momento non sono al computer. Può aiutare a prescindere.