หากมีข้อผิดพลาดจะส่งสัญญาณในรหัส Emacs Lisp และdebug-on-error
คือt
ฉันได้รับบัฟเฟอร์ backtrace ที่ทำให้ง่ายต่อการคิดออกที่เกิดข้อผิดพลาด อย่างไรก็ตามสำหรับข้อผิดพลาดที่เกิดขึ้นขณะประมวลผลการตอบสนองจากเครือข่ายแบบอะซิงโครนัสมันจะน่ารำคาญถ้ามีบัฟเฟอร์ backtrace ปรากฏขึ้นดังนั้นฉันอยากจะจับข้อผิดพลาดด้วยcondition-case
และเข้าสู่ระบบ
ดังนั้นเมื่อฉันจัดการข้อผิดพลาดcondition-case
มีวิธีเข้าถึง backtrace ที่จุดของข้อผิดพลาดหรือไม่? การเรียกใช้backtrace
ฟังก์ชันรับ backtrace ของโค้ดภายในตัวจัดการซึ่งไม่ใช่สิ่งที่ฉันกำลังมองหา
(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
สร้างการติดตามสแต็กและแนบไปกับข้อผิดพลาดที่เกิดขึ้น
magithub-error
ฟังก์ชั่นของฉันทำสิ่งที่คล้ายกับที่ฉันคิด แต่ตอนนี้ฉันไม่ได้ใช้คอมพิวเตอร์ มันอาจช่วยโดยไม่คำนึงถึง