【发布时间】:2013-01-31 17:25:28
【问题描述】:
在下面的代码中,在第一次迭代时出现异常,在第二次迭代中出现分段错误,没有打印任何错误消息。似乎没有捕获到异常:
int i = 0;
while(i++ < 10)
{
try {
cout << "Iteration: " << i << endl;
// Code...
cout << "OK" << endl;
}
catch(...)
{
cerr << "Error message" << endl;
continue;
}
}
Output:
Iteration 1
Error message
Iteration 2
Segmentation fault
这是正常的,还是真的有问题?
如果它应该是相关的,在那个代码块中我重置了一个 MySQL 连接,当我检查连接是否关闭时会生成异常。
谢谢。
平台:
Linux - OpenSuse 11.4
C++ - GCC 4.5.1
英特尔至强
【问题讨论】:
-
try-catch无法捕获分段错误。您应该使用调试器来捕获它。 -
我很确定它一定在您的
// Code...中。在您发布的内容中找不到段错误点... -
我设法通过编写
if (i==1) throw 0; else i = *(int*)0;复制了您的输出,但这不是您的// Code所做的,是吗?
标签: c++ exception exception-handling segmentation-fault try-catch