Jika kesalahan sinyal dalam kode Emacs Lisp, dan debug-on-error
adalah 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-case
dan mencatatnya.
Jadi ketika saya menangani kesalahan condition-case
, apakah ada cara untuk mendapatkan akses ke backtrace di titik kesalahan? Memanggil backtrace
fungsi 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-fail
membuat stack-trace dan melampirkannya pada kesalahan yang ditimbulkannya.
magithub-error
Fungsi saya melakukan sesuatu yang mirip dengan ini saya pikir, tapi saya tidak di komputer saat ini. Apa pun itu bisa membantu.