Wenn im Emacs-Lisp-Code ein Fehler gemeldet wird und dies der Fall debug-on-errorist t, erhalte ich einen Rückverfolgungspuffer, mit dem sich leicht herausfinden lässt, wo der Fehler aufgetreten ist. Bei Fehlern, die bei der asynchronen Verarbeitung einer Antwort aus dem Netzwerk auftreten, wäre es jedoch ärgerlich, wenn der Rückverfolgungspuffer eingeblendet würde. Daher würde ich den Fehler lieber mit abfangen condition-caseund protokollieren.
Gibt condition-casees eine Möglichkeit, bei der Behandlung eines Fehlers in auf die Rückverfolgung zuzugreifen, wenn der Fehler auftritt? Das Aufrufen der backtraceFunktion ruft die Rückverfolgung des Codes im Handler ab, was nicht das ist, wonach ich suche.
(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-faileinen Stack-Trace generieren und ihn an den Fehler anhängen, den er verursacht.
magithub-errorIch denke, meine Funktion macht etwas Ähnliches, aber ich bin gerade nicht an einem Computer. Es kann trotzdem helfen.