我在使用error C2712: Cannot use __try in functions that require object unwinding
时遇到了一段时间的麻烦,在缩小问题后,我留下了一个非常简单的代码,我无法理解为什么它会导致此错误。我在windows下使用Visual Studio。
我正在使用/ EHa进行编译(我不使用/ EHsc)
我使用__try/__except
而不是try/catch
的原因是因为我想捕获所有错误,并且不希望程序在任何情况下崩溃,包括例如除以0,尝试-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
答案 0 :(得分:7)
这是解决方案。有关详细信息,请参阅Compiler Error C2712
#include <string>
struct myStruct
{
static std::string foo() {return "abc";}
};
void koo()
{
__try
{ }
__except (true)
{ }
}
int main ()
{
myStruct::foo();
koo();
return 0;
}
额外注意:如果没有使用您的结构(myStruct)声明,则无需static
。