这主要是出于好奇,但我一直在阅读有关 Visual Studio 在 C++try-catch
构造中捕获 SEH 异常的历史。我一直在断言启用了 /GX 标志的旧版本 Visual Studio 会“有时”在 C++catch
块中捕获结构化的 Win32 异常。
什么情况下Visual Studio 6.0 使用/GX 标志构建时会在下面的代码中进入catch 块?
char * p = NULL;
try
{
*p = 'A';
}
catch(...)
{
printf("In catch\n");
}
在我自己使用 Visual Studio 6 + SP6 进行的简单测试中,程序执行会因未处理的异常而停止,并且永远不会打印“In catch”。然而,一些文章(比如这篇文章)让我相信进入catch
区块是可能的。