Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีจับ JavaScript Exception ใน ClojureScript

ClojureScript รันบน JavaScript VM สามารถจับ JavaScript Exceptions ได้ด้วย try/catch โดยใช้ js/Error สำหรับการโยน (throw) และจับ (catch)

รูปแบบการใช้งาน

;; โยน JavaScript Error
(js/Error. "Oops")
(throw (js/Error. "Error occurred!"))

;; จับ JavaScript Error
(try
  (throw (js/Error. "Error occurred"))
  (catch js/Error e
    e)) ;; คืนค่า Error object

;; JavaScript โยนอะไรก็ได้ แต่ ClojureScript จับได้ด้วย :default
(try
  (throw (js/Error. "Error Occurred!"))
  (catch :default e
    e))

รายละเอียด

  • js/Error - Constructor ของ JavaScript Error ใน ClojureScript
  • catch js/Error e - จับเฉพาะ JavaScript Error objects
  • catch :default e - จับทุกอย่าง (Catch-all) รวมถึงค่าที่ไม่ใช่ Error object ที่ JS โยนมา
  • ClojureScript มี ex-info/ex-data สำหรับ Custom Errors แบบ Clojure

ตัวอย่างสมบูรณ์

(ns example.error-handling)

(defn risky-operation []
  (throw (js/Error. "Something went wrong!")))

(defn safe-call []
  (try
    (risky-operation)
    (catch js/Error e
      (js/console.error "Caught JS Error:" (.message e))
      {:error true, :message (.message e), :stack (.-stack e)})
    (catch :default e
      (js/console.error "Caught unknown:" e)
      {:error true, :message "Unknown error"})))

;; ใช้งาน
(safe-call)

หมายเหตุ: ClojureScript Compile เป็น JavaScript ดังนั้น Exception Handling กลไกพื้นฐานคือของ JavaScript เอง