2010-06-10 19 views
6
foreach (Widget item in items) 
{ 
try 
{ 
    //do something... 
} 
catch { } 
} 


foreach (Widget item in items) 
{ 
try 
{ 
    //do something... 
} 
catch { continue; } 
} 

उत्तर

8

उस स्थिति में, कुछ भी नहीं, चूंकि प्रयास लूप यौगिक बयान का अंतिम विवरण है। continue हमेशा अगले पुनरावृत्ति पर जायेगा, या स्थिति को अब रखे जाने पर लूप को समाप्त कर देगा।

20

catch { continue; } कोड को नए पुनरावृत्ति पर शुरू करने का कारण बन जाएगा, catch लूप के भीतर ब्लॉक के बाद किसी भी कोड को छोड़ देगा।

3

संकलक इसे अनदेखा कर देगा। यह परावर्तक से लिया गया था।

public static void Main(string[] arguments) 
{ 
    foreach (int item in new int[] { 1, 2, 3 }) 
    { 
     try 
     { 
     } 
     catch 
     { 
     } 
    } 
    foreach (int item in new int[] { 1, 2, 3 }) 
    { 
     try 
     { 
     } 
     catch 
     { 
     } 
    } 
} 
+2

यह शायद संकलक द्वारा किया गया एक अनुकूलन है। यह उपर्युक्त उदाहरण कोड के लिए बहुत विशिष्ट है। यदि कैच ब्लॉक (दूसरे फोरैच लूप में) के बाद बयान थे, तो आपको शायद जारी रखना चाहिए। तो आप यह नहीं कह सकते, जारी रखें हमेशा अनदेखा किया जाता है। – SysAdmin

+0

@SysAdmin - मुझे उत्सुकता है कि आपने यह टिप्पणी क्यों की, जब मेरे उत्तर में कोई जवाब नहीं है, तो मैं हमेशा उल्लेख करता हूं कि 'जारी रखें' हमेशा अनदेखा कर दिया जाएगा। – ChaosPandion

9

अन्य उत्तरों आपको बताते हैं कि आपके दिए गए स्निपेट में क्या होगा। लूप में अंतिम कोड होने के साथ आपके पकड़ खंड के साथ, कोई कार्यात्मक अंतर नहीं है। यदि आपके पास पकड़ कोड के बाद कोड था, तो "जारी रखने" के बिना संस्करण उस कोड को निष्पादित करेगा। continuebreak का सौतेला भाई है, यह शेष लूप बॉडी के छोटे सर्किट करता है। continue के साथ, यह अगले पुनरावृत्ति पर जाता है, जबकि break लूप पूरी तरह से बाहर निकलता है। किसी भी दर पर, अपने लिए अपने दो व्यवहार प्रदर्शित करें।

for (int i = 0; i < 10; i++) 
{ 
    try 
    { 
     throw new Exception(); 
    } 
    catch 
    { 
    } 

    Console.WriteLine("I'm after the exception"); 
} 

for (int i = 0; i < 10; i++) 
{ 
    try 
    { 
     throw new Exception(); 
    } 
    catch 
    { 
     continue; 
    } 

    Console.WriteLine("this code here is never called"); 
} 
0

यदि आपका नमूना verbatim का पालन किया जाता है, तो, मैं "कोई अंतर नहीं" कहूंगा!

लेकिन, अगर आपके पास पकड़ने के बाद निष्पादित करने के लिए बयान हैं तो यह एक अलग गेम है!
catch { continue; } कैच ब्लॉक के बाद कुछ भी छोड़ देगा !!!
catch{} अभी भी पकड़ ब्लॉक के बाद बयान निष्पादित करेगा !!

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