หากมีข้อผิดพลาดจะส่งสัญญาณในรหัส 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ฟังก์ชั่นของฉันทำสิ่งที่คล้ายกับที่ฉันคิด แต่ตอนนี้ฉันไม่ได้ใช้คอมพิวเตอร์ มันอาจช่วยโดยไม่คำนึงถึง