我遇到了一段时间error C2712: Cannot use __try in functions that require object unwinding
的问题,在缩小问题范围后,我得到了一个非常简单的代码,我不明白为什么它会导致这个错误。我在 Windows 下使用 Visual Studio。
我正在使用 /EHa 进行编译(我不使用 /EHsc)
我使用__try/__except
而不使用的原因try/catch
是因为我想捕获所有错误,并且不希望程序在任何情况下崩溃,包括例如除以 0,try-catch 无法捕获。
#include <string>
static struct myStruct
{
static std::string foo() {return "abc";}
};
int main ()
{
myStruct::foo();
__try
{ }
__except (true)
{ }
return 0;
}
输出:
error C2712: Cannot use __try in functions that require object unwinding