इसलिए मैं हाल ही में सी # में लिखा एक अपेक्षाकृत जटिल अनुप्रयोग लिख रहा हूं जो बार-बार छोटे कार्यों की एक श्रृंखला करता है। जब मैंने पहली बार एप्लिकेशन शुरू किया तो मुझे एहसास हुआ कि मैं जिस कोड को टाइप कर रहा था वह दोहराया गया था और इसलिए मैंने ऐप के अधिकांश लॉजिक को अलग-अलग सहायक कक्षाओं में शामिल करना शुरू किया जिसे मैं आवश्यकतानुसार कॉल कर सकता था।मेरे सी # अनुप्रयोगों में अपवादों को संभालने के लिए सही जगह कहां है?
मेरे ऐप (और कोड की मात्रा) का आकार आधा में कटौती करने की आवश्यकता नहीं है। लेकिन जैसे ही मैं जा रहा था, मैंने अपने आवेदन में कुछ और देखा जो दोहराया गया प्रतीत होता था और ऐसा लगता था कि इसे बेहतर किया जा सकता है।
अब मेरे सहायक वर्गों में मेरी अधिकांश विधियां या तो HttpWebRequest
बना रही हैं या फ़ाइलों पर संचालन को सहेज/हटा रही हैं। ऐसा कहने के बाद कि मुझे संभावना को संभालने की ज़रूरत है कि आखिरकार कॉल पूरा नहीं होगा, या फ़ाइल सहेज नहीं सकती क्योंकि पर्याप्त जगह नहीं है, या जो भी हो। जिस समस्या में मैं दौड़ रहा हूं वह यह है कि जब भी मैं किसी एक तरीके से कॉल करता हूं तो मुझे लिखने/पकड़ने के वक्तव्य लिखना पड़ता है। इसके शीर्ष पर मुझे त्रुटि संदेश को फिर से टाइप करना होगा (या आखिरकार एक स्टेटस संदेश। मैं जानना चाहता हूं कि यह कब सफल होता है)।
तो यहाँ का एक टुकड़ा की तरह है कि मैं क्या लिखने की आवश्यकता:
try
{
ItemManager.SaveTextPost(myPostItem);
}
// Majority of the time there is more than one catch!
catch
{
//^^^Not to mention that I have to handle multiple types of exceptions
//in order to log them correctly(more catches..ugh!)
MessageBox.Show("There was an error saving the post.");
//Perform logging here as well
}
मैं अब तक क्या यह निष्कर्ष निकाला है से है:
- मुझे इस के लिए overkill 50 से अधिक इस लिखने के लिए हो रही है मेरे ऐप के लिए समय। लगता है जैसे मुझे हेल्पर क्लास में शामिल होना चाहिए और में कैच का पूरा सेट शामिल है।
- लेकिन मैं परिणाम कैसे जान सकता हूं? मैं शायद स्ट्रिंग लौटने की सोच रहा था जिसमें त्रुटि/सफलता संदेश शामिल है।
- वास्तव में इस तरह के तरीकों के लिए इसे उस विधि की आवश्यकता नहीं है जिसके द्वारा सहायक विधि को इसे कोशिश/पकड़ ब्लॉक में संलग्न करने के लिए कहा जा रहा है।
क्या यह दृष्टिकोण सही है? क्या ऐसा करने का कोई और तरीका है? क्या मुझे कॉलिंग विधि में कोशिश/पकड़ का उपयोग करना चाहिए? इस तरह से मेरा पहला शॉट इस तरह से मैं वास्तव में यह सुनना चाहूंगा कि इस परिदृश्य को संभालने वाले अन्य लोगों ने क्या कहना है।
ऐसा ही एक सवाल हाल ही में पूछा गया था: http://stackoverflow.com/questions/8156530/exception-handling-in-method-definition-or-call/8156574#8156574 – Tudor