अंत में ब्लॉक,, आप की अनुमति एक डेवलपर के रूप को साफ़ रखने के लिए अपने आप के बाद, कोशिश में कोड को आगे बढ़ाने के कार्यों के बावजूद {} ब्लॉक में त्रुटियों को अवरुद्ध कर दिया गया है, और दूसरों ने इसे इंगित किया है, मुख्य रूप से मुक्त संसाधनों की छतरी के नीचे गिरता है - समापन पॉइंटर्स/सॉकेट/परिणाम सेट, कनेक्शन लौटाना एक पूल आदि
@mats बहुत सही है हमेशा "हार्ड" असफलताओं के लिए क्षमता है - अंत में ब्लॉक महत्वपूर्ण मिशन कोड शामिल नहीं होना चाहिए, जो हमेशा कोशिश {}
अंदर transactionally किया जाना चाहिए - @mats फिर से वास्तविक सुंदरता यह आप अपवाद वापस अपने स्वयं के तरीकों में से बाहर फेंक, और अभी भी यह गारंटी है कि आप को साफ़ रखने की अनुमति देता है:
try
{
StreamReader stream = new StreamReader("foo.bar");
mySendSomethingToStream(stream);
}
catch(noSomethingToSendException e) {
//Swallow this
logger.error(e.getMessage());
}
catch(anotherTypeOfException e) {
//More serious, throw this one back
throw(e);
}
finally
{
stream.close();
}
तो, हम अपवाद के कई प्रकार पकड़ कर सकते हैं, उन्हें प्रक्रिया अलग ढंग से (पहला प्रयास {}, दूसरा प्रभावी रूप से रिटर्न) से परे किसी भी चीज़ के लिए निष्पादन की अनुमति देता है, लेकिन हमेशा अच्छी तरह से और स्पष्ट रूप से साफ़ हो जाता है।
आप एक प्रोग्रामिंग भाषा निर्दिष्ट करना चाहेंगे। भाषा के आधार पर व्यवहार अलग-अलग होगा। –
सबसे अच्छा जवाब तय करने के लिए मुझे लगता है कि यदि आपको कोशिश/पकड़ ब्लॉक वास्तव में खाली हैं या नहीं, तो आपको स्पष्ट करने की आवश्यकता है। जैसा कि उत्तर में से एक में बताया गया है, अर्थात् वही है यदि कोशिश/पकड़ ब्लॉक खाली हैं, अन्यथा अलग-अलग उत्तरों अर्थपूर्ण मतभेदों को संबोधित करते हैं। – Kasper
मैं पिछली टिप्पणियों से सहमत हूं, आपको वास्तविक भाषा पर स्पष्टीकरण देना होगा और दिए गए उत्तरों की गंभीरता से समीक्षा करना होगा। अपरिवर्तित उत्तर या तो गलत या अपूर्ण हैं। –