Jika kesalahan sinyal dalam kode Emacs Lisp, dan debug-on-erroradalah t, saya mendapatkan buffer backtrace yang membuatnya mudah untuk mencari tahu di mana kesalahan terjadi. Namun, untuk kesalahan yang terjadi saat memproses respons dari jaringan secara tidak sinkron, akan sangat menyebalkan jika buffer backtrace muncul, jadi saya lebih suka menangkap kesalahan dengan condition-casedan mencatatnya.
Jadi ketika saya menangani kesalahan condition-case, apakah ada cara untuk mendapatkan akses ke backtrace di titik kesalahan? Memanggil backtracefungsi mendapat jejak kode di dalam handler, yang bukan yang saya cari.
(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-failmembuat stack-trace dan melampirkannya pada kesalahan yang ditimbulkannya.
magithub-errorFungsi saya melakukan sesuatu yang mirip dengan ini saya pikir, tapi saya tidak di komputer saat ini. Apa pun itu bisa membantu.