2009-11-17 10 views
5

मुझे आज कुछ कोड में अपवाद था: "ए [कुछ अपवाद] को अनचाहे किया गया था।""कोशिश करें ... पकड़ें" ब्लॉक में कोड कैसे एक अनचाहे अपवाद फेंक सकता है?

हालांकि, यह कोड "कोशिश/पकड़" संरचना के "प्रयास" ब्लॉक के अंदर स्पष्ट रूप से था।

मुझे यहां क्या याद आ रही है?

अद्यतन: यह सी #

अद्यतन है: ओह, यह भूल जाते हैं। यह पता चला है कि त्रुटि का विशिष्ट तंत्र यह है कि मैं मूर्ख हूं। इसके लिए कोई फिक्स नहीं है।

+3

आप किस भाषा/ढांचे का उपयोग कर रहे हैं? – stusmith

+0

क्या आप कुछ कोड पोस्ट कर सकते हैं? –

+0

यदि आप अपना कोड पोस्ट करते हैं, तो आपकी समस्या का निदान करना आसान हो सकता है –

उत्तर

5

क्या कैच स्टेटमेंट एक विशिष्ट प्रकार का अपवाद निर्दिष्ट करता है?

यदि ऐसा होता है, तो यह केवल उस प्रकार के अपवाद को पकड़ लेगा।

+0

मैं "अपवाद" पकड़ रहा हूं। क्या हर कोई उस से प्राप्त नहीं होता है? – Deane

+0

जरूरी नहीं है, कैच ब्लॉक में कुछ भी निर्दिष्ट न करें। –

2

क्या आप "अपवाद तोड़ने"/"फेंकने पर ब्रेक" के साथ डीबगर में चल रहे थे? इस मामले में आप प्रयास/पकड़ को पारित करने से पहले अपवाद देखेंगे।

+0

यह डीबगर में था, हां। यह हो सकता है। विजुअल स्टूडियो में, क्या यह कहीं एक सेटिंग है? – Deane

+0

जब आपको अपवाद मिला तो क्या आप जारी रख सकते थे और फिर इसे कोशिश/पकड़ में देखेंगे? अपवाद सेटिंग्स आमतौर पर "डीबग-> अपवाद" के अंतर्गत होती हैं। भाषा के आधार पर आप अलग-अलग चीजें कर सकते हैं। –

1

मेरे पास 10 डॉलर हैं जो कहते हैं कि यह एक थ्रेडएबॉर्ट अपवाद या कुछ अन्य स्वयं-फेंकने वाला अपवाद है। यदि ऐसा है तो आपको अपवाद को दो बार पकड़ना होगा।

0

भाषा यह कहना मुश्किल है बिना जाने, लेकिन कई भाषाओं अपवाद पकड़ा नहीं किया जा सकता की अवधारणा है - नेट, OutOfMemoryException और ExecutionEngineException (अन्य लोगों के) में उदाहरण के लिए, पकड़ा नहीं किया जा सकता क्योंकि वे अनिवार्य रूप से गैर वसूली योग्य हैं ।

3

स्टैकओवरफ्लो अपवाद जैसे रिकर्सन के कारण कुछ समस्याएं और जैसे ही कोशिश के अंदर फेंक दिया जाएगा ... ब्लॉक को पकड़ें क्योंकि उन्हें वास्तव में ब्लॉक के भीतर कोड की किसी विशेष पंक्ति से नहीं फेंक दिया जाता है, बल्कि सीएलआर द्वारा। मेमोरी के लिए रेंज अपवादों और अन्य समस्याओं के बारे में भी यह सच है जो कोड की किसी एक पंक्ति का प्रत्यक्ष परिणाम नहीं हैं।

शायद तुम कुछ इस तरह के बारे में बात कर रहे हैं:

alt text

4

अप्रबंधित अपवाद पकड़ (अपवाद ई) द्वारा पकड़ा नहीं किया जाएगा, यदि आप एक

try 
    { 
    } 
    catch 
    { 
    } 

बजाय

कोशिश कर सकते हैं
 try 
     { 
     } 
     catch (Exception e) 
     { 
     } 
संबंधित मुद्दे