में अपवाद पास करना मैं सी ++ में एक लाइब्रेरी लिख रहा हूं जो पुराने सी एपीआई का उपयोग करता है। मेरी लाइब्रेरी का क्लाइंट कॉलबैक फ़ंक्शन निर्दिष्ट कर सकता है, जिसे अप्रत्यक्ष रूप से मेरी लाइब्रेरी के माध्यम से बुलाया जाता है जिसे सी एपीआई के माध्यम से बुलाया जाता है। इसका मतलब है कि क्लाइंट कॉलबैक में सभी अपवादों को संभाला जाना चाहिए।सी सी एपीआई सीमा
मेरा प्रश्न यह है: मैं सीमा के एक तरफ अपवाद कैसे पकड़ सकता हूं और सी एपीआई सीमा को फिर से भरने के बाद इसे फिर से फेंक सकता हूं और निष्पादन सी ++ भूमि में वापस आ जाता है ताकि अपवाद को संभाला जा सके क्लाइंट कोड?
यदि अपवाद को मूल्य से फेंक दिया गया है, तो क्या 'upgrade_ptr' इसे जीवित रखेगा? –
@ सेठ कार्नेगी: मानक से, हाँ। (§18.8.5/8 "संदर्भित वस्तु कम से कम तब तक वैध रहेगी जब तक कि 'अपवाद_प्टर' ऑब्जेक्ट होता है जो इसे संदर्भित करता है।") बूस्ट कार्यान्वयन वही करना चाहिए। – kennytm
यह बहुत ही बढ़िया है, ऐसा लगता है कि कमेटी ने सी ++ 11 को दिमाग में डिजाइन किया है। यह भी कारण है कि वीएस -2010 'अपवाद_प्टर', 'current_exception' और' rethrow_exception' लागू करता है जिसे मैं इस उत्तर को स्वीकार कर सकता हूं। धन्यवाद। –