Nếu một lỗi được báo hiệu trong mã Emacs Lisp, và debug-on-error
là t
, tôi nhận được một bộ đệm backtrace mà làm cho nó dễ dàng để tìm ra nơi xảy ra lỗi. Tuy nhiên, đối với các lỗi xảy ra trong khi xử lý phản hồi từ mạng không đồng bộ, sẽ rất khó chịu khi bộ đệm backtrace bật lên, vì vậy tôi muốn bắt lỗi condition-case
và đăng nhập nó.
Vì vậy, khi tôi xử lý một lỗi trong đó condition-case
, có cách nào để có quyền truy cập vào backtrace tại điểm xảy ra lỗi không? Gọi backtrace
hàm sẽ nhận được backtrace của mã bên trong trình xử lý, đó không phải là điều tôi đang tìm kiếm.
(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
tạo theo dõi ngăn xếp và đính kèm với lỗi mà nó phát sinh.
magithub-error
Chức năng của tôi làm một cái gì đó tương tự như tôi nghĩ, nhưng tôi không ở máy tính ngay bây giờ. Nó có thể giúp bất kể.