2010-10-04 21 views
5

हाय क्या कोई मुझे बता सकता है कि सी # में उपयोगकर्ता परिभाषित अपवाद कैसे लिखना है? जैसा कि हमारे पास जावा में है, क्या हम सी # में लिख सकते हैं?सी # में उपयोगकर्ता परिभाषित अपवाद कैसे लिखें?

उत्तर

11

यह व्यावहारिक रूप से जावा में जैसा ही है - आप Exception कक्षा का विस्तार करते हैं।

सबसे बुनियादी रूप में।

public class CustomException : System.Exception 
{ 
    public CustomException() 
    { 
    } 

    public CustomException(string message) 
    : base(message) 
    { 
    } 

    public CustomException(string message, System.Exception innerException) 
    : base(message, innerException) 
    { 
    } 
} 

इसके लिए, फिर उस डेटा को जोड़ें जिसे आप फ़ील्ड या गुणों का उपयोग करके कैप्चर करना चाहते हैं।

इस प्रश्न का उत्तर देने से पहले, मैंने कस्टम अपवादों पर माइक्रोसॉफ्ट डिजाइन गिल्डलाइन की जांच की। Designing Custom Exceptions (एमएसडीएन)

  1. गहरे नामस्थान पदानुक्रम से बचें।
  2. यदि संभव हो, तो प्रदान किए गए सामान्य आधार अपवादों से प्राप्त करें, यानी ArgumentExceptionहाउवरApplicationException से प्राप्त न करें। यह हानिकारक नहीं है, ऐसा करने में कोई बात नहीं है। MSDN Blog Post on ApplicationException
  3. "अपवाद" प्रत्यय का उपयोग करें।
  4. ISerializable इंटरफ़ेस को कार्यान्वित करके अपवादों को क्रमबद्ध करें। स्पष्ट रूप से एक अपवाद आवेदन डोमेन भर में सही ढंग से काम करने और सीमाओं को रिमोट करने के लिए serializable होना चाहिए।
  5. एक निजी अपवाद स्थिति में सुरक्षा-संवेदनशील जानकारी स्टोर करें, यह सुनिश्चित करने के लिए केवल सुरक्षा कोड प्राप्त करने के लिए सुरक्षा सुरक्षा विशेषता जोड़ें।

मैं अत्यधिक MSDN पर Design Guidelines पढ़ने की सलाह।

16

आप System.Exception से उत्तराधिकारी बनना चाहते हैं और प्राथमिक रूप से एक ही सार्वजनिक रचनाकार (न्यूनतम) प्रदान करते हैं और आधार रचनाकारों को पैरामीटर पास करते हैं। प्रासंगिक गुणों और/या विधियों को जोड़ें जिन्हें आप अपनी विशेष आवश्यकता के लिए उपयुक्त मानते हैं।

public class MyException : System.Exception 
{ 
    public MyException() : base() { } 
    public MyException(string message) : base(message) { } 
    public MyException(string message, Exception innerException) : base(message, innerException) { } 
} 
+0

.NET फ्रेमवर्क डिज़ाइन दिशानिर्देशों के मुताबिक, आपको अपवाद से सीधे उत्तराधिकारी होना चाहिए जबतक कि आपके पास कुछ और लेने का कोई अच्छा कारण न हो। –

+0

@ जोनाथन: सभी सिस्टम सामान्य पर वापस आते हैं। मेरे बेवकूफ उत्तर हटा दिया और मेरी बेकार टिप्पणी हटा दी। एसओ भावना के नाम पर जवाब ऊपर उठाया। सुधार के लिए धन्यवाद। –

संबंधित मुद्दे