मैं एक कस्टम अपवाद को परिभाषित करना चाहता हूं, और मैं जानना चाहता हूं कि संदेश के रूप में स्ट्रिंग के बजाय मैं कक्षा को शामिल कर सकता हूं या नहीं। कारण यह है कि मैं एक संरचना में अतिरिक्त जानकारी भेजना चाहता हूं जो अधिक लचीला हो सकता है।क्या मैं अपवाद में अतिरिक्त जानकारी ले जाने वाली वस्तु को शामिल कर सकता हूं?
उत्तर
हां। बस एक वर्ग बनाएं जो अपवाद से विरासत में मिलता है।
class YourException : Exception
{
public YourException(SpecialObject thethingYouWantIncluded)
{
ExtraObject = thethingYouWantIncluded;
}
public SpecialObject ExtraObject { get; private set; }
}
तो
throw new YourException(new SpecialObject());
और
catch (YourException ex) { /* do something with ex.ExtraObject here */ }
हाँ आप कर सकते हैं, एक तरह से।
सी # में, सभी अपवाद कक्षाएं हैं, वे System.Exception
या उससे प्राप्त कुछ वर्ग के उदाहरण हैं। यदि आप एक कस्टम अपवाद बनाना चाहते हैं, तो आपको केवल Exception
से प्राप्त होने वाली एक नई कक्षा को परिभाषित करने की आवश्यकता है।
इस कस्टम वर्ग, आप जोड़ सकते हैं में जो कुछ भी अतिरिक्त गुण, खेतों, आदि है कि आप चाहते हैं:
public class CustomException : Exception
{
public Object CustomThing { get; set; }
}
जब आप प्रकार का एक चर में इस तरह के एक अपवाद को पकड़ने CustomException
आप सभी के लिए उपयोग होगा आपके द्वारा परिभाषित कस्टम गुण, किसी भी अन्य वर्ग की तरह।
हालांकि, आप नहीं कर सकते हैं तथ्य यह है कि Exception.Message
एक स्ट्रिंग है। आपकी कस्टम संदेश कक्षा में Message
संपत्ति होगी और यह string
होगी, और आप इसे बदल नहीं सकते हैं। आपको एक कस्टम स्ट्रिंग को परिभाषित करने की आवश्यकता होगी जिसमें सभी प्रासंगिक जानकारी शामिल हों। आप अपने कस्टम गुणों से जानकारी लौटाने के लिए Message
संपत्ति ओवरराइड कर सकते हैं, लेकिन यह अभी भी एक स्ट्रिंग की जरूरत है:
public class CustomException : Exception
{
public override string Message
{
get
{
if (this.CustomThing == null)
{
return base.Message;
}
else
{
return string.Format("Custom thing: {0}", this.CustomThing);
}
}
}
}
+1 उल्लेख करने के लिए: "हालांकि, आप क्या नहीं कर सकते हैं यह तथ्य बदल गया है कि अपवाद। संदेश एक स्ट्रिंग है।" – hometoast
- 1. मैं आईओएस 6 में शामिल अतिरिक्त एशियाई फ़ॉन्ट्स को कैसे स्थापित और उपयोग कर सकता हूं?
- 2. क्या मैं एआरएल कमांड में निर्देशिका शामिल कर सकता हूं?
- 3. क्या मैं .config फ़ाइल बना सकता हूं और इसे web.config में शामिल कर सकता हूं?
- 4. क्या मैं एसटीएल में अपवाद अक्षम कर सकता हूं?
- 5. क्या मैं एक भौतिक फोन बैकअप ले सकता हूं और एमुलेटर को बहाल कर सकता हूं?
- 6. खुले उपयोगकर्ता को अतिरिक्त जानकारी
- 7. मैं अपने भौतिकी वस्तु को कैसे व्यवस्थित कर सकता हूं?
- 8. मैं जावास्क्रिप्ट में अपवाद कैसे पुनर्स्थापित कर सकता हूं, लेकिन ढेर को संरक्षित करता हूं?
- 9. मैं सी # में ब्लूटूथ कैसे शामिल कर सकता हूं?
- 10. मैं .NET में cpu जानकारी कैसे प्राप्त कर सकता हूं?
- 11. मैं पायथन में सिस्टम जानकारी कैसे वापस कर सकता हूं?
- 12. क्या मैं सिस्टम लाइब्रेरी (उदा। Libxml2) को शामिल कर सकता हूं, मैं एक मणि (उदा। नोकोगिरी) में संकलित करता हूं जिसे मैं हरोकू में तैनात कर सकता हूं?
- 13. क्या मैं बीनक्रिएशन अपवाद को अनदेखा कर सकता हूं और इसके बजाय शून्य को इंजेक्ट कर सकता हूं?
- 14. मैं केवल अपवाद लॉग इन करने के लिए एनएलओजी लक्ष्य को कैसे कॉन्फ़िगर कर सकता हूं?
- 15. मैं एमएसवीसी में अपवाद हैंडलिंग कैसे बंद कर सकता हूं?
- 16. मैं तारों की सरणी कैसे ले सकता हूं और उन्हें फ़िल्टर कर सकता हूं?
- 17. अपवाद उठाते समय मैं पाइथन ट्रेसबैक ऑब्जेक्ट को कैसे संशोधित कर सकता हूं?
- 18. क्या मैं "एवल" का उपयोग करने वाली विशेषता में मान को अस्वीकार कर सकता हूं?
- 19. मैं टिंकर में चुप अपवाद कैसे कर सकता हूं?
- 20. मैं PHP में array_map कॉलबैक के लिए एक अतिरिक्त अतिरिक्त तर्क कैसे पारित कर सकता हूं?
- 21. क्या मैं गिट में फ़ाइलों को मर्ज कर सकता हूं?
- 22. मैं fputcsv द्वारा उपयोग की जाने वाली रेखा समाप्ति को कैसे बदल सकता हूं?
- 23. मैं दस्तावेज़ों का पूर्वावलोकन कैसे ले सकता हूं?
- 24. क्या मैं एक सामान्य विधि को एक प्रकार की वस्तु पास कर सकता हूं?
- 25. मैं मॉनिटर जानकारी कैसे प्राप्त कर सकता हूं?
- 26. क्या मैं डेटाबेस में Google API से जानकारी संग्रहीत कर सकता हूं?
- 27. अपवाद को फेंकने वाली फाइलें
- 28. मैं मूस से संरचित अपवाद कैसे प्राप्त कर सकता हूं?
- 29. मैं एकाधिक चयनों के परिणाम कैसे ले सकता हूं और एक पंक्ति में जोड़ सकता हूं
- 30. मैं लिंक ऑर्डरबी के लिए उपयोग की जाने वाली अभिव्यक्तियों को गतिशील रूप से कैसे संग्रहीत कर सकता हूं?
"एक वर्ग के बजाय एक स्ट्रिंग फेंक" ??? कीवर्ड हमेशा फेंक एक अपवाद है जो एक वर्ग है फेंकता इसलिए, आप हमेशा कक्षा को फेंक रहे हैं .. – nitgeek