下面给出的简单异常程序给出了未处理的异常“微软C++异常: int at memory location 0x0012fe94..”。在函数excep()返回之后,我立即得到了这个错误。有人能告诉我为什么会出现这个错误吗?此外,如果解释/分析代码中所有可能的错误,也会很有帮助。我正在学习如何更好地编写代码。
我正在使用Visual C++ 2005。
#include <iostream>
using namespace std;
int main ()
{
int excep(int);
throw excep(20);
return 0;
}
int
在这个问题听起来很愚蠢之前,让我来解释一下。我使用了很多C#、Java和C++。我注意到的主要事情是错误处理,特别是在第三方库中。在C#和Java中,处理错误的一般方法是通过异常,而不是传统的C错误处理方法In。
这是我通常在C#/Java中发现的:
try
{
ExternalLibraryInit();
}
catch (ExternalLibraryException ex)
{
//error
}
这是我在C++中经常能找到的:
if (ExternalLibraryInit()) //Generally returns an int, which no error i
所以我的c++程序崩溃了,我得到的错误是:
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Aborted
现在,我最近添加到我的代码中的是一个SIGSEGV处理程序,所以如果是分段错误,它将继续打印堆栈跟踪。
如何在c++中为未捕获的(或更像是无法捕获的)异常创建退出处理程序?