2010-03-03 15 views
5

मैंने कुछ डेवलपर्स को कैच ब्लॉक में रिटर्न स्टेटमेंट का उपयोग किया है। नियोजित करने के लिए यह एक उपयोगी तकनीक क्यों होगी?पकड़ ब्लॉक में वापसी विवरण

संपादित करें: मैंने वास्तव में केवल वापसी कीवर्ड का उपयोग किया है।

धन्यवाद

उत्तर

1

सार्वजनिक शून्य समारोह() {

try 
{ 
    //some code here 
} 
catch 
{ 
    return; 
} 

}

जब वापसी के लिए उपलब्ध है की जाँच हो सकता है; मारा जाता है, निष्पादन प्रवाह समारोह से बाहर कूदता है। यह केवल शून्य तरीकों पर किया जा सकता है।

संपादित करें: यदि आप शेष कार्य निष्पादित नहीं करना चाहते हैं तो आप ऐसा करते हैं।उदाहरण के लिए यदि आप फ़ाइल IO कर रहे हैं और एक पठन त्रुटि होती है, तो आप उस फ़ाइल में डेटा को संसाधित करने वाले कोड को निष्पादित नहीं करना चाहते हैं क्योंकि आपके पास यह नहीं है।

7

अवसरों जब आप अपवाद उत्पन्न की परवाह नहीं करते हैं, की कोशिश कार्रवाई विफल रही ही नहीं। एक उदाहरण TryParse कार्य करता है जो pseduo कोड में की तरह लग रहे हो सकता है:

try 
{ 
    //attempt conversion 
    return true; 
} 
catch 
{ 
    return false; 
} 
1

यह उपयोगी हो सकता है अगर आप जानते हैं कि समारोह की वापसी मान कैच ब्लॉक में होना चाहिए।

उदाहरण:

public bool IsDatabaseAvailable() { 
    try { 
     // connect 
     return true; 
    } 
    catch (Exception) { 
     return false; 
    } 
    finally { 
     // clean up 
    } 
} 
+0

मैंने वास्तव में केवल उपयोग किए जाने वाले रिटर्न कीवर्ड को देखा। – dotnetdev

+0

@dotnetdev: क्या विरोध के रूप में? मैं वापसी कीवर्ड का उपयोग कर रहा हूँ। – recursive

+0

क्षमा करें मेरा मतलब था "मतलब" (मैं वास्तव में केवल वापसी कीवर्ड का उपयोग करता था ...)। – dotnetdev

1

आप त्रुटि को पकड़ यह लॉग इन करें और जो इंगित करता है, तो समारोह सफल रहा था झूठी का मान प्रदान कहने के लिए चाहते हो सकता है। अन्य परिस्थितियों में आप कुछ डेटा वापस करना चाहेंगे जो कि ब्लॉक

1

में गणना की गई थी। नेट फ्रेमवर्क के अंदर कुछ विधि अपवाद फेंक देती है जब उसके पास अच्छा प्रारूप नहीं होता है। यदि आपका मूल्य "10s" यह एक अपवाद trow जाएगा

एक अच्छा उदाहरण int.TryParse(object value)

है। इस मामले में हम जानते हैं कि यह अवैध रूपांतरण की वजह से है।

तो

try 
{ 
    int.TryParse(value); 
    return true; 
} 
catch { return false; } 

एक समारोह जो हमें बताती हैं कि स्ट्रिंग मान्य interger है हो सकता है।

यदि आप इस मामले के लिए उस फॉर्म का उपयोग करते हैं तो कृपया ऐसा करने के लिए पकड़ें (अपवाद पूर्व) को इतनी मजबूती न दें कि ऑब्जेक्ट के अंदर त्रुटि को क्रमबद्ध करने के लिए नेट को धीमा कर दें।

यह भी याद रखना महत्वपूर्ण है कि आप कोशिश पकड़ ब्लॉक के अंदर वापसी का भी उपयोग करते हैं, फिर भी यह अंततः ब्लॉक को निष्पादित करेगा।

तो यदि आपका क्लीएप कोड आखिरकार अंदर है तो चिंता न करें कि ढांचा इसे कॉल करना सुनिश्चित करेगा।

मेरा 2 सेंट। एन

+0

मुझे लगता है कि आपका मतलब 'int.Parse' है, जो अमान्य प्रारूप पर फेंकता है;' int.TryParse' कभी नहीं फेंकता, एक ' बूल 'पार्स सफलता का संकेत देता है, और' int int 'दूसरा तर्क लेता है। बस FYI। –

0

कोई भी स्थिति जहां प्रयास विफल होने पर आपके पास कोई विकल्प है। एक उदाहरण अगर file कुछ operation

bool IsComplete = false; 

    try 
    { 
     // FileStream currentWriteableFile = 
        File.OpenWrite(sFileLocation);   
    } 
    catch(Exception) 
    { 
     return false; 
    }