2012-12-28 13 views
10

प्रोग्रामिंग के लिए नया होने के साथ विशिष्ट होने के कारण मुझे केवल यह पता चला है कि आप विशेष रूप से कुछ प्रकार की त्रुटियों को पकड़ सकते हैं और केवल उस प्रकार की त्रुटि के लिए कोड टाई कर सकते हैं।Try/Catch

मैं इस विषय में शोध कर रहा हूं और मुझे वाक्यविन्यास समझा नहीं गया है।

catch (InvalidCastException e) 
{ 
} 

मैं समझता हूँ InvalidCastException त्रुटि का प्रकार संभाला जा रहा है, लेकिन मैं क्या e है लेकर अनिश्चित हूं।

क्या कोई इसे समझा सकता है?

+2

बस ऐसे ही 'catch' ब्लॉक के अंदर एक ब्रेकपाइंट सेट और डीबगर में' e' को देखो !! –

+1

एमएसडीएन अपवाद वर्ग - http://msdn.microsoft.com/en-us/library/system.exception%28v=vs.71%29.aspx – MethodMan

+5

पर बेहतर नज़र डालें, जबकि यह प्रश्न पूरे * बहुत सारे नहीं दिखाता है * अनुसंधान प्रयास के, यह * कई लोगों के लिए एक बहुत स्पष्ट और उपयोगी सवाल है, इसलिए मैं डाउनवोट न करने की सलाह दूंगा। – Adam

उत्तर

16

e वह ऑब्जेक्ट है जो अपवाद के लिए विशिष्ट डेटा रखता है। यदि आप विभिन्न प्रकार के अपवादों को देखते हैं, तो आप देखेंगे कि उनके पास सभी प्रकार के डेटा हैं। बहुत से लोग नहीं करते हैं, लेकिन कई करते हैं, और जब वे करते हैं, तो वे केवल सामान्य त्रुटि प्राप्त करने के बजाय क्या हुआ, इसकी पहचान करने में आपकी सहायता कर सकते हैं।

उदाहरण के लिए, NotFiniteNumberExceptionOffendingNumber नामक एक अतिरिक्त संपत्ति है कि एक सामान्य Exception वस्तु में मौजूद नहीं है परिभाषित करता है ... यह तो अतिरिक्त डेटा है कि आप यह पता लगाने की वास्तव में क्या हुआ की जरूरत हो सकती प्रदान करता है।

2

e एक चर नाम है। यह हो सकता है कि आप इसे नाम देना चाहें, जैसे exception

5

'e' सिर्फ वैरिएबल नाम है, यदि आप इसे पढ़ने में आसान पाते हैं तो 'ex' या 'exception' पर कॉल कर सकते हैं। लेकिन 'e' सिर्फ एक सम्मेलन, जैसे 'i' एक for i = 0... में निर्माण

6

"e" बस जो भी आप अपवाद कॉल करने के लिए तय है। वैसे ही जैसे आप क्या करेंगे

string name = "..."; 

या

int total = 8; 

जहां string और इस उदाहरण में int datatypes हैं, "name" (आपके मामले में डेटाप्रकार InvalidCastException है), जबकि और "total" कर रहे हैं परिवर्तनीय नाम, जो आपके मामले में बस "e" है।

3

e अपवाद ऑब्जेक्ट का संदर्भ है जो पकड़ा गया अपवाद का विवरण संग्रहीत करता है। विवरण एक अपवाद Message, एक InnerException वस्तु, आदि शामिल हो सकते हैं

2

e चर कि अपवाद तो अब रखती है आप e.message और इस तरह के

19

तरह बातें कर सकते हैं मान लीजिए कोई e था। आप अपवाद का संदेश कैसे प्राप्त करेंगे?

नाम e (या कोई अन्य नाम) अपवाद ऑब्जेक्ट पर हैंडल प्राप्त करने के लिए है ताकि आप इससे जानकारी निकाल सकें।

catch (InvalidCastException) //legal C# 

यह काम करता है, लेकिन आप अपने प्रकार को छोड़कर त्रुटि के बारे में कुछ और पता नहीं कर सकते हैं:

यह कानूनी वाक्य रचना किसी भी नाम बाहर देने के लिए नहीं है।

+5

+1 अच्छा स्पष्टीकरण –

+0

वाह, मुझे नहीं पता था कि आप चर के बिना पकड़ घोषित कर सकते हैं ... मैं तुरंत इसके साथ अपना कोड कूड़ा शुरू कर दूंगा। :-P –

4

e परिवर्तनीय है कि InvalidCastException का उदाहरण रखा गया है। फिर आप उस ऑब्जेक्ट के गुणों को देख सकते हैं ताकि आपको try ब्लॉक में कोड द्वारा त्रुटि को फेंकने के कारण वास्तव में समझने में सहायता मिल सके।

2

ई अमान्यकास्टएक्सप्शन प्रकार का उदाहरण है। कैच ब्लॉक में, उदाहरण के लिए आप Debug.Write (e.ToString()) कह सकते हैं।

4

"अवैध कैस्टएक्सप्शन" प्रकार है, ई इस प्रकार का ऑब्जेक्ट है। ऑब्जेक्ट के साथ , आप उस पर सदस्य फ़ंक्शंस का आह्वान कर सकते हैं। उदाहरण के लिए

catch (InvalidCastException e) { 
    ... 
    e.printErrorMessage(); 
    ... 
}