सामान्य रूप से, आपको किसी भी अपवादों को पकड़ना नहीं चाहिए।
मुझे पता है कि यह अजीब लगता है, लेकिन तथ्य यह है कि आपको केवल उन अपवादों को पकड़ना चाहिए जो आप वास्तव में कर सकते हैं, और आप आमतौर पर अपवादों के बारे में कुछ भी नहीं कर सकते हैं।
इस नियम के "अपवाद" को अपवाद को "संभाल" करने का क्या अर्थ है, इसके साथ क्या करना है। कुछ अनुप्रयोगों में, अपवाद को "हैंडलिंग" का अर्थ लॉग इन करना है। दूसरों में (उदाहरण के लिए एएसपी.नेट), अपवाद को संभालने के लिए बेहतर है, क्योंकि ढांचे (इस मामले में एएसपी.नेट स्वास्थ्य निगरानी) आपके लिए लॉग इन करेगा।
इवेंट-संचालित कोड में, विंडोज फॉर्म की तरह, मुझे लगता है कि ईवेंट हैंडलर के भीतर अपवादों को पकड़ना आवश्यक है। कम से कम .NET के पुराने संस्करणों में, अपवाद को बाहर प्रसारित करने की अनुमति देता है, उदाहरण के लिए, एक बटन क्लिक घटना अप्रिय परिणाम उत्पन्न करती है। मैं आम तौर पर अपवाद पकड़ता हूं और इसे एक संवाद बॉक्स में प्रदर्शित करता हूं।
एक बहु स्तरीय आवेदन में, एक स्तरीय सीमाओं पर अपवाद आ सकता है, तो एक नया, स्तरीय विशेष अपवाद rethrow:
try
{
// ...
}
catch (Exception ex)
{
throw new TierException("Some message", ex);
}
एक और उपयोग के मामले अपवाद को पकड़ने के लिए है, तो कोई नया अपवाद फेंक उस में अधिक जानकारी के साथ:
public int GetValueFromConfigurationFile(...)
{
const string configFileName = "...";
try
{
// ...
}
catch (FileNotFoundException fEx)
{
throw new InvalidOperationException(
String.Format("Can't find configuration file {0}", configFileName),
fEx);
}
}
इस मामले में, आप एक विशिष्ट अपवाद (FileNotFoundException
) को पकड़ने, और वे अन्यथा पता नहीं कर सके अपने कॉलर जानकारी प्रदान कर रहे हैं: कि नहीं मिला फ़ाइल एक विन्यास फाइल था।
सामान्य संदेश है: - केवल अपवाद क्या आप जानते हैं को संभालने के लिए कैसे पकड़ने - हमेशा भीतरी अपवाद है जब कोई नया अपवाद बनाने, अपवाद की श्रृंखला को बचाने के लिये शामिल हैं - - सबसे विशिष्ट अपवाद संभव पकड़ो rethrow करने के लिए वर्तमान अपवाद, throw;
का उपयोग करें, throw ex;
कुछ और हैं, और मैं आपको Microsoft Framework Design दिशानिर्देशों से संदर्भ ढूंढने का प्रयास करूंगा।
पीएस अगर कोई सवाल पा सकता है तो यह एक डुप्लिकेट है, डुप्लिकेट के रूप में बंद करने के लिए स्वतंत्र महसूस करें। मुझे इससे कोई प्रतिनिधि खोने में कोई फर्क नहीं पड़ता। मैं सिर्फ डुप्लिकेट नहीं मिला।
मैं होना चाहिए बस के लिए लिंक पोस्ट "अपवाद हैंडलिंग" tag wiki, जहां यह कहते हैं:
हालांकि, .नेट कार्यक्रमों के संदर्भ में अपवाद हैंडलिंग के लिए, "Design Guidelines for Exceptions देखना "।
आपको यह उत्तर और इसमें प्रासंगिक लिंक मिल सकते हैं: http://stackoverflow.com/a/7152374/625332 – Dmitry