पर पास किए बिना कस्टम अपवाद का संदेश सेट करना मैं सी # में एक कस्टम अपवाद बनाना चाहता हूं, लेकिन सिद्धांत में मुझे मानव पठनीय अपवाद मैसेज बनाने से पहले थोड़ा पार्सिंग करने की आवश्यकता है।बेस कन्स्ट्रक्टर
समस्या यह है कि मूल संदेश केवल Messsage
के बेस कन्स्ट्रक्टर को कॉल करके सेट किया जा सकता है, इसलिए मैं अग्रिम में कोई पार्सिंग नहीं कर सकता।
public class CustomException : Exception
{
string _Message;
public CustomException(dynamic json) : base("Plep")
{
// Some parsing to create a human readable message (simplified)
_Message = json.message;
}
public override string Message
{
get { return _Message; }
}
}
समस्या है विजुअल स्टूडियो डीबगर अभी भी संदेश है कि मैं निर्माता में पारित कर दिया गया है, Plep इस मामले में पता चलता है:
मैं इस तरह संदेश संपत्ति overring की कोशिश की।
throw new CustomException(new { message="Show this message" })
परिणामों में:
अगर मैं आधार निर्माता खाली यह एक बहुत ही सामान्य संदेश दिखाई देगा छोड़:
प्रकार 'App.CustomException' की एक बिना क्रिया का अपवाद हुआ App.exe
प्रश्न
ऐसा लगता है कि अपवाद संवाद कुछ फ़ील्ड/संपत्ति को पढ़ता है जिसमें मेरे पास कोई पहुंच नहीं है। अपवाद पर बेस कन्स्ट्रक्टर के बाहर मानव पठनीय त्रुटि संदेश सेट करने का कोई और तरीका है।
ध्यान दें कि मैं दृश्य स्टूडियो 2012
आपका कोड मेरे लिए ठीक काम करता है। और यह काम करना चाहिए। – Swift
यह संकलित करता है, लेकिन यदि आप कोई त्रुटि फेंकते हैं तो यह "यह संदेश दिखाएं" के बजाय अंतर्निहित संदेश ("Plep") दिखाएगा। कृपया जो अतिरिक्त उदाहरण मैंने जोड़ा है उसे देखें। –
मुझे लगता है कि आदर्श समाधान उपलब्ध नहीं है। मैं एक ही समस्या पर गया जब मैंने जेएसओएन को व्हाइलो अपवाद कक्षाओं को पार्स किया। प्रक्रिया में कस्टम गुण खो गए हैं। क्या आप एक परिदृश्य का वर्णन कर सकते हैं? शायद हम कुछ कामकाज में मदद कर सकते हैं। – Minduca