我遇到了一个问题,我的可执行文件可能会收到中止/重试/忽略对话框,例如:
调试错误! 程序:... whatever.exe
R6010 - abort()被称为
我相信这是因为我有一个未处理的异常,我可以用这个简单的程序复制问题:
int _tmain(int argc, _TCHAR* argv[])
{
try
{
throw std::exception();
}
catch (std::logic_error& e)
{
}
std::cout << "Hello World!";
return 0;
}
我的假设是否正确(它是由未处理的异常引起的)?我在网上找到了很多关于错误的例子,但实际上并没有定义错误代码的含义。
此错误仅发生在我的调试版本中。我的发布版本将在崩溃之前挂起(这是我对未处理的异常的期望)。
答案 0 :(得分:5)
如果存在断言,则会发生这种情况:assert( condition );
。
仅在调试版本中检查/编译断言。
未处理的异常在内部进行断言,以便允许开发人员中断和调试程序并查找错误。
在发布版本中,应用程序立即崩溃。
如果删除或捕获异常,则不再出现错误。