2012-07-31 10 views
5

में कोई पकड़ नहीं है, तो रन कोड/कैच का उपयोग करते समय कोड चलाएं, अगर कोई त्रुटि नहीं मिली है और कोई कैच नहीं है तो कोड चलाने के लिए कोई तरीका है?रन कोड/कैच

try 
{ 
    //Code to check 
} 
catch(Exception ex) 
{ 
    //Code here if an error 
} 

//Code that I want to run if it's all OK ?? 

finally 
{ 
    //Code that runs always 
} 
+3

क्यों आखिरी बात कोशिश के अंत में अपना कोड क्यों न जोड़ें? –

+1

क्योंकि आप बाहरी अपवाद हैंडलिंग द्वारा पकड़े जाने वाले शेष कोड द्वारा फेंकने वाले किसी भी अपवाद को चाहते हैं, और यह आंतरिक प्रयास/पकड़ ब्लॉक नहीं है। इस मामले में ऐसा करने का सबसे अच्छा तरीका (जिसे मैं जानता हूं) एक बूल का उपयोग करना है। – John

उत्तर

18

अपने try ब्लॉक के अंत में कोड जोड़ें। जाहिर है आप केवल कभी वहाँ मिल जाएगा अगर वहाँ एक अपवाद से पहले नहीं था:

try { 
    // code to check 

    // code that you want to run if it's all ok 
} catch { 
    // error 
} finally { 
    // cleanup 
} 

आप शायद एक तरीका है कि आप केवल अपवाद जैसा कि आप उम्मीद और नहीं खुले दिल से सब कुछ को पकड़ने, जो अपवाद भी हो सकते हैं में अपनी पकड़ बदलना चाहिए »कोड में फेंक दिया गया है जिसे आप चलाने के लिए चाहते हैं अगर यह ठीक है«।

5

बस इसे अपवाद फेंकने वाले कोड के बाद रखें।

यदि कोई अपवाद फेंक दिया जाता है तो यह नहीं चलेगा, अगर कोई नहीं फेंक दिया जाता है, तो यह दौड़ जाएगा।

try 
{ 
    // Code to check 
    // Code that I want to run if it's all OK ?? <-- here 
} 
catch(Exception ex) 
{ 
    // Code here if an error 
} 
finally 
{ 
    // Code that runs always 
} 
9

आप इसे की जरूरत है अपने try कोड सफल होता है हमेशा निष्पादित करने के लिए, अपनी कोशिश ब्लॉक के अंत में डाल दिया। यह तब तक चलता रहेगा जब तक आपके try ब्लॉक में पिछले कोड अपवाद के बिना चलता है।

try 
{ 
    // normal code 

    // code to run if try stuff succeeds 
} 
catch (...) 
{ 
    // handler code 
} 
finally 
{ 
    // finally code 
} 

आप के लिए विकल्प अपवाद संचालन की जरूरत है "succeded" कोड, आप कर सकते हैं हमेशा घोंसला अपने ट्राई/कैच:

try 
{ 
    // normal code 

    try 
    { 
     // code to run if try stuff succeeds 
    } 
    catch (...) 
    { 
     // catch for the "succeded" code. 
    } 
} 
catch (...) 
{ 
    // handler code 
    // exceptions from inner handler don't trigger this 
} 
finally 
{ 
    // finally code 
} 

यदि आपका "सफल" कोड अपने अंत में, उपयोग के बाद निष्पादित करने के लिए है एक चर:

bool caught = false; 
try 
{ 
    // ... 
} 
catch (...) 
{ 
    caught = true; 
} 
finally 
{ 
    // ... 
} 

if(!caught) 
{ 
    // code to run if not caught 
} 
1
try { 
    // Code that might fail 
    // Code that gets execute if nothing failed 
} 
catch { 
    // Code getting execute on failure 
} 
finally { 
    // Always executed 
} 
1

मैं इस तरह यह लिखते थे: यदि एक पद्धति के लिए कॉल ठीक भाग गया तो सफलता केवल है try

try 
{ 
    DoSomethingImportant(); 
    Logger.Log("Success happened!"); 
} 
catch (Exception ex) 
{ 
    Logger.LogBadTimes("DoSomethingImportant() failed", ex); 
} 
finally 
{ 
    Logger.Log("this always happens"); 
} 
+1

मैन, एसओ में त्वरित उंगलियां हैं। आप लोगों को लंदन जाना चाहिए और – SpaceBison

+3

प्रतिस्पर्धा करना चाहिए लाखों कीबोर्ड पर दस लाख कीबोर्ड पर लाखों स्टैक ओवरव्लो खातों के साथ सही उत्तर सही उत्तर देने की संभावना है :) – Polynomial