Clojure:
एरर्स को हैंडल करना

कैसे करें:

Clojure, अपने Lisp पूर्वजों की तरह, गलतियों से निपटने के लिए अपवादों (exceptions) पर निर्भर करती है। ये रहा तरीका जब चीजें गलत हो जाती हैं तो आपको क्या करना चाहिए।

एक अपवाद को फेंकना सरल है:

(throw (Exception. "ओह! कुछ गलत हो गया।"))

एक अपवाद को पकड़ना, आप ऐसा बहुत करने वाले हैं:

(try
  ;; जोखिम वाला कोड
  (/ 1 0)
  (catch ArithmeticException e
    (println "शून्य से विभाजन नहीं कर सकते!"))
  ;; finally ब्लॉक चाहे कुछ भी हो चलेगी
  (finally 
    (println "सफाई का कोड यहाँ आएगा।")))

ऊपर के पकड़ने वाले ब्लॉक के लिए नमूना आउटपुट:

शून्य से विभाजन नहीं कर सकते!
सफाई का कोड यहाँ आएगा।

अपवादों के बारे में अधिक समृद्ध संदर्भ के लिए ex-info और ex-data का उपयोग करना:

(try
  ;; एक कस्टम अपवाद पैदा करना
  (throw (ex-info "कस्टम त्रुटि" {:type :custom-failure}))
  (catch Exception e
    ;; हमारे कस्टम अपवाद से डेटा निकालना
    (println (ex-data e))))

नमूना आउटपुट:

{:type :custom-failure}

गहराई में जाने

Clojure में एरर हैंडलिंग की कहानी अन्य Lisps या यहां तक कि Java (जिससे यह try-catch तंत्र को उधार लेती है) से ज्यादा अलग नहीं है। यह व्यावहारिक है; अपवादों का उपयोग मुख्य मार्ग है, जैसे कि Java, लेकिन Clojure ex-info और ex-data के साथ और अधिक समृद्ध त्रुटि डेटा के लिए एक कार्यात्मक स्वाद प्रदान करती है।

Clojure में एरर हैंडलिंग के विकल्पों में cats जैसे पुस्तकालयों से either मोनाड जैसे मोनाडिक संरचनाएँ शामिल हैं, या core.async का उपयोग चैनल-आधारित एरर प्रसार के लिए किया जाता है। हालांकि, ये अधिक जटिल होते हैं और विशिष्ट परिदृश्यों में उपयोग किए जाते हैं।

ऐतिहासिक रूप से, प्रोग्रामिंग भाषाओं में एरर हैंडलिंग सरल स्थिति वापसी से लेकर आधुनिक भाषाओं की अधिक परिष्कृत अपवाद हैंडलिंग तंत्र तक विकसित हुई है। Clojure सरलता और कार्यात्मक प्रोग्रामिंग का एक स्पर्श चुनती है, पुराने और नए का मिश्रण करते हुए।

यह भी देखें