2011-10-04 81 views
9

有没有一种方法允许在抛出异常之后执行坏块代码?C++,忽略异常并继续执行代码?

目前,我的代码有连续运行的while循环。此while循环内的代码有时会抛出向量超出范围的错误。我一直无法找到这个特殊异常的原因,但最终它并不重要,因为while循环内的代码一遍又一遍地做同样的事情,下一次迭代不依赖于以前的迭代任何方式。

此,while循环崩溃中的代码后,我想它从while语句的顶部重新开始。

有没有办法在C++中做到这一点? try/catch在这种情况下似乎不起作用。

附加信息: 我很想在while循环中取代码,将其放入自己的可执行文件中,并将while循环放入bash脚本中,但每次迭代都需要保持静态的一些数据需要太多的时间来重新加载,每次数据,所以我被迫做了我的无限while循环内C++

+2

在循环的范围'catch'异常,并从那里继续。但是,你真的需要找到问题的根源。 – Chad

+0

你可以请张贴一些代码来看看吗?尝试{} catch(){}应该是标准的,如果你想要一个强大的应用 – user710502

+0

异常是例外,应该处理。即使你找不到问题。 – Griwes

回答

12

你只需要抓住while循环中的例外:

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

'} catch(std :: out_of_range&exc){std :: cerr << exc.what(); }' –

+0

缺少该catch中的异常类型。我建议'赶上(...)',因为他的追赶动机不是很好的设计。 –

+2

这是甚至有效的语法?当我在'catch'后面尝试没有任何圆括号的try catch语句时,我得到'error:expected'(''''token''' – HelloGoodbye

1

的第一件事你应该做的是调试的代码,对于th您可以在调试器中运行代码并诊断问题所在。在地毯下推动问题不会让它消失,程序仍然是越野车。

如果在另一方面,这个问题是什么是真正特殊但可行的(考虑打开一个文件,通过网络发送数据包时,任何可能失败,但预计不会--as相比于一些应该从未发生),则try/catch办法应该工作。

0

,如果你可能发布的代码片段,我们都可以帮你。 但一般你应该总是有某种错误处理,无论是一个尝试{}赶上{}或只检查一个变量一样的:

while(true) 
{ 

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

else 
{ 
//continue with code execution 
} 

} 

希望你得到这个问题解决了!