Si une erreur est signalée dans le code Emacs Lisp, et debug-on-error
c'est le cas t
, j'obtiens un tampon de retour arrière qui permet de déterminer facilement où l'erreur s'est produite. Cependant, pour les erreurs qui se produisent lors du traitement d'une réponse du réseau de manière asynchrone, il serait ennuyeux de faire apparaître le tampon de trace, donc je préfère attraper l'erreur avec condition-case
et l'enregistrer.
Donc, lorsque je gère une erreur condition-case
, y a-t-il un moyen d'accéder à la trace arrière au point de l'erreur? L'appel de la backtrace
fonction récupère la trace du code à l'intérieur du gestionnaire, ce qui n'est pas ce que je recherche.
(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
généré une trace de pile et l' auriez attachée à l'erreur qu'elle soulève.
magithub-error
fonction fait quelque chose de similaire, je pense, mais je ne suis pas devant un ordinateur en ce moment. Cela peut aider malgré tout.