2011-10-04 4 views
9

क्या कोई रास्ता फेंकने के अपवाद के बाद कोड के खराब ब्लॉक के निष्पादन की अनुमति देता है?सी ++, अपवाद को अनदेखा करें और कोड जारी रखें?

वर्तमान में, मेरे कोड में एक समय लूप है जो लगातार चलता है। इसके अंदर कोड जबकि लूप कभी-कभी श्रेणी त्रुटि से बाहर वेक्टर फेंकता है। मैं इस विशेष अपवाद के कारण को ट्रैक करने में असमर्थ रहा हूं, लेकिन आखिरकार, इससे कोई फर्क नहीं पड़ता क्योंकि थोड़ी देर के अंदर कोड एक ही चीज़ को बार-बार करता है और अगला पुनरावृत्ति पिछले पुनरावृत्ति पर निर्भर नहीं होता है किसी भी तरह से।

यह, लूप क्रैश के भीतर कोड के बाद, मैं इसे बयान के शीर्ष से फिर से शुरू करना चाहता हूं।

क्या सी ++ में इसे पूरा करने का कोई तरीका है? कोशिश करें/पकड़ इस स्थिति में काम नहीं कर रहा है।

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

while(true) 
{ 
    try 
    { 
      // your code 
    } 
    catch (Exception e) { /* Please, at least do some logging or other error handling here*/ } 
} 
+2

लूप के दायरे में अपवाद को पकड़ें और वहां से जारी रखें। लेकिन, वास्तव में आपको अपनी समस्या का मूल कारण ढूंढना होगा। – Chad

+0

क्या आप कुछ कोड पोस्ट करने के लिए कृपया पोस्ट कर सकते हैं? कोशिश करें {} पकड़() {} मानक होना चाहिए यदि आप एक मजबूत ऐप – user710502

+0

अपवाद असाधारण हैं और इसे संभाला जाना चाहिए। यहां तक ​​कि यदि आप समस्या को ट्रैक नहीं कर सकते हैं। – Griwes

उत्तर

12

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

यदि दूसरी ओर, समस्या वास्तव में असाधारण है लेकिन व्यवहार्य (फ़ाइल खोलने पर विचार करें, नेटवर्क पर एक पैकेट भेजना, जो कुछ भी संभवतः असफल हो सकता है, लेकिन उम्मीद नहीं है - कभी होने की तुलना में कुछ की तुलना में), try/catch दृष्टिकोण काम करना चाहिए।

+1

'} पकड़ो (std :: out_of_range और exc) {std :: cerr << exc.what(); } ' –

+0

उस 'पकड़' में अपवाद प्रकार गुम है। मैं 'पकड़ (...)' का सुझाव दूंगा क्योंकि पकड़ने के लिए उनकी प्रेरणा अच्छी डिजाइन नहीं है। –

+2

क्या यह वैध वाक्यविन्यास भी है? मुझे 'त्रुटि: अपेक्षित' ('पहले' {'टोकन' मिलता है जब मैं 'पकड़' के बाद किसी भी कोष्ठक के बिना पकड़ने का प्रयास करने का प्रयास करता हूं। – HelloGoodbye

1

पहली बात यह है: फिर से लोड करने के लिए कि डेटा हर बार इसलिए मैं अपने अनंत ऐसा करने के लिए, जबकि पाश के भीतर सी ++

0

यदि आप संभवतः कोड का एक स्निपेट पोस्ट कर सकते हैं, तो हम सभी आपकी मदद कर सकते हैं। लेकिन सामान्य रूप में आप हमेशा से निपटने है कि क्या यह एक कोशिश {} {} पकड़ या बस की तरह एक चर जाँच हो त्रुटि किसी प्रकार का होना चाहिए:

while(true) 
{ 

if(flag == "Error") 
{ 
//error handle 
} 

else 
{ 
//continue with code execution 
} 

} 

आप इस समस्या को हल करने के उम्मीद!