这个问题在这里已有答案:
在下面的代码中,我想根据关于异常处理模型的Microsoft Page描述,使用c ++ catch(...)来捕获异步和同步异常。
我还将“异常处理模型”设置为Yes with SEH Exceptions (/EHa)
值。
我分别用以下状态测试了代码:
char*
(char *c;
)中复制一个字符串时,我可以在catch (...)
部分捕获它的异常。 (但我知道这是一个未定义的行为!)但问题仍然存在。
这是我的代码(我在一个未分配的strcpy()
和一个字符数组上测试了char*
):
int main()
{
char c[3] = { 0 }; // Cannot catch any exception
//char *c; // Can catch exception
try
{
strcpy(c, "abcdefghijklmnopqrstuvwxyz1234567890");
}
catch (...)
{
cout << "Undefined behavior!" << endl;
}
return 0;
}