2012-09-24 13 views
8

DynamicException और throwDyn और throwDynToControl.OldException मॉड्यूल में उपयोग किया जाता था। अब OldException अच्छा के लिए चला गया है, इस पर निर्भर संकुल टूट गए हैं।पोस्ट-ghc-7.6.1 दुनिया में डायनामिक एक्सेप्शन समतुल्य क्या है?

ExtensibleException पैकेज या अन्य जगहों में DynamicException के बराबर है? मैं न्यूनतम परिवर्तनों से दूर जाना चाहता हूं।

संदर्भ: मैं जीएचसी 7.6.1 के साथ लैम्बडबॉट बनाने की कोशिश कर रहा हूं। टूटी हुई फाइल Signal.hslambdabot-utils में है।

अद्यतन क्या पुराने अपवादों को नए एक्स्टेंसिबल अपवादों को बंद करने के लिए कुछ प्रकार की मार्गदर्शिका है? lambdabot कई स्थानों पर OldException का उपयोग करता है, एक त्वरित फिक्स संभव नहीं लगता है। के रूप में Control.Exception डिफ़ॉल्ट रूप से गतिशील अपवाद का समर्थन करता है नई Control.Exception में इन कार्यों के

+0

क्यों न केवल 'नियंत्रण। अपवाद'? यह मनमाने ढंग से टाइप किए गए अपवादों को डेटा के रूप में समर्थन करता है। – dflemstr

उत्तर

8

समकक्ष, बस throw, throwTo और catch हैं।

पुराने इंटरफ़ेस और नए के बीच मुख्य अंतर यह है कि इन कार्यों में ExceptionTypeable की बजाय बाधा है। हालांकि, ज्यादातर मामलों में डिफ़ॉल्ट कार्यान्वयन पर्याप्त है, इसलिए आपको उन प्रकारों के लिए Exception उदाहरण घोषित करने की आवश्यकता है, उदा।

instance Exception Foo 
+0

धन्यवाद, सरल 'फेंक' काम करता है। मैंने कभी अपवादों का उपयोग नहीं किया है इसलिए मैं यहां कुछ हद तक खो गया हूं। जैसे पुराने 'अपवाद' डेटाटाइप के साथ क्या करना है? –

+1

@ एनएम। असल में, पुरानी 'अपवाद' प्रकार का प्रत्येक कन्स्ट्रक्टर अब एक अलग प्रकार से मेल खाता है और सभी अपवाद गतिशील रूप से पकड़े जाते हैं। मैंने लिखा [नए अपवाद इंटरफेस के बारे में एक जवाब] (http://stackoverflow.com/questions/6009384/exception-handling-in-haskell) जो आपके लिए उपयोगी हो सकता है। – hammar

+0

धन्यवाद, मैं इसे आज़मा दूंगा! –

संबंधित मुद्दे