2009-06-09 14 views
7

में रिकॉर्ड को कैसे छोड़ें मैं एक साधारण लॉगिन पर एक सक्रिय निर्देशिका आधार से ऑब्जेक्ट बनाने की कोशिश कर रहा हूं। समस्या यह है कि कुछ लॉगिन जानकारी मान्य है।फोरैच

मैं केवल कोशिश-पकड़ का उपयोग कैसे कर सकता हूं ताकि अगर कोई अपवाद फेंक दिया जाए, तो बस अगले लॉगिन पर जाएं?

foreach (var PharosUserItem in ListRef) 
{ 
    ADUser User; 
    try 
    { 
     User = new ADUser(PharosUserItem.UserLoginPharos); 
    } 
    catch (ByTel.DirectoryServices.Exceptions.UserNotFoundException ex) 
    { 
     break; 
    } 
} 

तोड़ मुझे foreach से बाहर हो जाता है, जो कि मैं क्या नहीं करना चाहता:

यहाँ कोड है। कोई विचार?

+0

मुझे लगता है कि आप ... –

+1

नहीं जारी रखने के लिए के लिए एक खाली पकड़ काम करेगा डाल सबसे अच्छा तरीका है, beacause है उसके बाद क्रियाएं हैं जिन्हें मैंने नहीं दिखाया है। – Polo

+0

Personnaly मैं कोशिश ब्लॉक के अंदर उपयोगकर्ता चर का उपयोग करूंगा और बस ब्रेक के साथ अपवाद पकड़ूंगा और न ही जारी रखूंगा। –

उत्तर

30

उपयोग करने के लिए आप की तलाश कर रहे है अगले चरण को छोड़ करने के लिए जारी

foreach (var PharosUserItem in ListRef) 
    { 
     ADUser User; 
     try 
     { 
      User = new ADUser(PharosUserItem.UserLoginPharos); 
     } 
     catch (ByTel.DirectoryServices.Exceptions.UserNotFoundException ex) 
     { 
      continue; 
     } 
    } 
13

बजाय continue बयान का उपयोग करें:

foreach (var pharosUserItem in ListRef) 
{ 
    ADUser user; 
    try 
    { 
     user = new ADUser(pharosUserItem.UserLoginPharos); 
    } 
    catch (UserNotFoundException) 
    { 
     continue; 
    } 
    // Use "user" here 
} 

(मैं, चर आवरण के मामले में कुछ परिवर्तन किए हैं अपवाद के लिए एक बड़े पैमाने पर लंबे समय तक पूरी तरह से योग्य नाम का उपयोग कर से बचने के लिए, और के लिए एक चर प्रदान अपवाद जिसे आप अनदेखा करते हैं।)

ध्यान दें कि यदि कोई उचित तरीका है कि आप वैध उपयोगकर्ताओं की एक सूची प्राप्त कर सकते हैं और इसे जांच सकते हैं, तो यह प्रवाह नियंत्रण के अपवाद का उपयोग करने से बेहतर होगा जैसा कि आप यहां कर रहे हैं। यह संभव नहीं हो सकता है, लेकिन यह जाँच के लायक है :)

1

अपवाद फेंकने की बजाय, आपको यह प्रयास करना चाहिए कि उपयोगकर्ता पहले मान्य है या नहीं। अपवाद फेंकना काफी महंगी है और वास्तव में केवल 'असाधारण' परिस्थितियों में उपयोग किया जाना चाहिए और ऐप के तार्किक प्रवाह को नियंत्रित नहीं करना चाहिए, यह वही नहीं है जिसके लिए उन्हें कुछ उपयोगकर्ताओं को असफल होने की उम्मीद है।

0

क्यों जारी रखने के बजाए कुछ भी नहीं उपयोग करें?

बजाय बयान जारी रखने का उपयोग करें:

foreach (var pharosUserItem in ListRef) 
{ 
    ADUser user; 
    try 
    { 
     user = new ADUser(pharosUserItem.UserLoginPharos); 
    } 
    catch (UserNotFoundException) 
    { 

    } 
    // Use "user" here 
} 

या एक

 console.writeline("user not found: "+ pharosuseritem.tostring()); 
संबंधित मुद्दे