2010-03-14 16 views

उत्तर

10

मुझे लगता है कि वाक्य रचना this की तरह है (भले ही यह फोन करने वाले में ऐसी बातों को पकड़ने के लिए बेहतर है। और अगर आप ऐसा करने जा रहे हैं एक बार आप इसे पकड़ लिया?)

Bar::Bar() 
try 
    : Foo(1) 
{ 
} 
catch(const SomeException &e) 
{ 
} 
+5

वाह, यह कुछ अजीब दिखने कोड है। –

+3

ध्यान दें कि इसका उपयोग अपवाद को अनदेखा करने के लिए नहीं किया जा सकता है। यदि 'पकड़' ब्लॉक अपने आप पर कोई अपवाद नहीं फेंकता है, तो मूल अपवाद स्वचालित रूप से पुनर्स्थापित हो जाता है (विवरण के लिए लिंक किए गए GOTW देखें)। – sth

+0

@sth: सुनिश्चित करें कि यह कर सकता है, बस 'वापसी'। – Potatoswatter

1

से ली गई मेरा मानना ​​है कि इस प्रक्रिया वस्तु बनाने के द्वारा पकड़ा जाना चाहिए है।

6

सी ++ करने के लिए एक तंत्र है इसलिए, लेकिन इसका शायद ही कभी उपयोग किया जाता है।

Bar::Bar() 
try 
    : Foo(1) 
{ 
} 
catch(Something) 
{ 
} 

देखें इस क्लासिक gotw है, जो कारण है कि यह केवल अपवाद अनुवाद करने के लिए इस्तेमाल किया जाना चाहिए की रूपरेखा (जैसे, अपवाद प्रकार FooException BarException हो जाता है): यह समारोह कोशिश ब्लॉक है।

+1

हमेशा एक संदर्भ पकड़ो। – Potatoswatter

0

एक boost::optional साथ परेशानी उदाहरण की जगह पर विचार करें। फिर आप अपने प्रारंभिकरण को कन्स्ट्रक्टर के शरीर में रोक सकते हैं।

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