2010-10-19 11 views
7

संभव डुप्लिकेट:
C : How do you simulate an 'exception' ?अपवाद शुद्ध सी में से निपटने

हाय, मुझे पता है कि अपवाद हैंडलिंग सी ++ में नहीं बल्कि सी में उपलब्ध है लेकिन मैं यह भी पढ़ा है कि अपवाद हैंडलिंग है ओएस पक्ष से प्रदान किया गया है, तो क्या सी के लिए कोई भी कार्य नहीं है, ओएस से उसी व्यवहार को आचरण करने और फेंकने की कोशिश के रूप में? धन्यवाद।

+6

डुप्लिकेट: [सी: कैसे आप एक 'अपवाद' अनुकरण करते] (http://stackoverflow.com/questions/1219438/), [मैं nestable कोशिश पकड़ने के अंत में संदेश के साथ में बयान के साथ अपवाद कैसे लागू करते हैं सी] (http://stackoverflow.com/questions/1779189/), [सी के लिए अपवाद पुस्तकालय (सी ++ नहीं)] (http://stackoverflow.com/questions/3581818/), [सी के लिए अपवाद पुस्तकालय (सी ++ नहीं)] (http://stackoverflow.com/questions/1410329/) और संबंधित: [हुड के तहत अपवाद कैसे लागू किए जाते हैं?] (http://stackoverflow.com/questions/1995734/), [अपवाद कैसे फेंकें सी में?] (http://stackoverflow.com/questions/2891766/) आदि – dmckee

+0

चलो, बीजेन, आप यहां नए नहीं हैं। आप जानते हैं कि चीजें कैसे काम करती हैं। – dmckee

उत्तर

7

सी भाषा के पास अपवाद हैंडलिंग के लिए कोई समर्थन नहीं है। हालांकि सी के लिए अपवाद हैंडलिंग का माध्यम प्लेटफॉर्म + कंपाइलर विशिष्ट आधार पर मौजूद है।

उदाहरण के लिए विंडोज़ में प्रोग्राम सीईएच अपवाद हैंडलिंग का उपयोग कर सकते हैं।

मैं पिछले कि सी समारोह जोड़ी setjmp और longjmp सी में अपवाद हैंडलिंग है मैं इसे इंजेक्शन पैटर्न के करीब पर विचार में तर्क देखा है, लेकिन यह जांच कर रही लायक है

1

मंच-स्वतंत्र तरीके से नहीं। और यह केवल हार्डवेयर/ओएस-स्तरीय अपवादों के लिए होगा, न कि एसपी अपवाद।

1

मुझे नहीं लगता कि एक सच्चे, शुद्ध, पोर्टेबल सी समाधान है।) Setjmp()/longjmp (: माइक्रोसॉफ्ट compilers के लिए, आप __try __except उपयोग कर सकते हैं, को देखने के http://msdn.microsoft.com/en-us/library/zazxh1a9(VS.80).aspx

2

सी एक मानक पुस्तकालय में अपवाद प्रदान करता है।

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