वहाँ है कार्यों के बारे में एक कोशिश पकड़ बात है, जो मैं कभी कभी लगता है कि काफी उपयोगी हो सकता है:सी ++ में फ़ंक्शन-व्यापी अपवाद हैंडलिंग - क्या यह एक खराब शैली है?
bool function()
try
{
//do something
}
catch(exception_type & t)
{
//do something
}
तो सवाल के पहले भाग: इस शैली बुरा सामान्य स्थिति में माना जाता है?
और ठोस उदाहरण मैं में इस दृष्टिकोण का इस्तेमाल किया:
हम सी और सी में कोड की काफी एक बहुत ++ के साथ इस परियोजना के लिए किया था। और वहां हमारे पास कस्टम अपवाद प्रकार थे (std :: अपवाद नहीं लिया गया)। मुझे एक्सएमएल लाइब्रेरी को एकीकृत करने और हमारे प्रकार के सभी अपवादों को डालने की आवश्यकता थी। तो, मूल रूप से, अंतिम चरण एक्सएमएल लाइब्रेरी से सभी अपवादों को पकड़ना और उन्हें परिवर्तित करना था।
समारोह से पहले:
bool readEntity(...)
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
के बाद:
bool readEntity(...)
try
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
catch(XMLBaseException & ex)
{
//create our exception and throw
}
मेरे विचार कुछ इस तरह चला गया: मैं स्पष्ट रूप से मेरे इरादों राज्य सब अपवाद कस्टम प्रकार में एक प्रकार से प्राप्त कन्वर्ट करने के लिए और हम रखने के हमारे बिना क्षैतिज स्क्रॉल बार के स्क्रीन (क्षैतिज स्क्रॉल बार खराब हैं)।
ठीक है, मुझे कोड समीक्षा के दौरान गैर-स्पष्ट एक के रूप में वास्तव में इस दृष्टिकोण के लिए काफी आलोचना की गई थी।
तो मैं आपको विचार सुनना चाहता हूं।
अद्यतन: बस स्पष्ट होना: फ़ंक्शन को रीफैक्टर करना एक विकल्प नहीं था। और वास्तव में यह एक अच्छा लिखा गया था।
इसी तरह का प्रश्न (लेकिन डुप्लिकेट नहीं। लेकिन दिलचस्प हो सकता है): http://stackoverflow.com/questions/335839/can-you-really-have-a-function-method-without-a-body-but -just-a-try-catch-block –