编译器警告(等级 1)C4297

“function”: 假定函数不引发异常,但确实发生了

函数包含 nothrow 声明和一个或多个 throw 语句。 若要解决 C4297,请不要尝试在用 nothrow 声明的函数中引发异常或尝试移除 nothrow 规范。

有关异常规范的更多信息,请参见 异常规范。此外,有关如何在编译时修改异常处理行为的信息,请参见 /EH(异常处理模型)

还为标记外部“C”的 __declspec(dllexport) 函数(即使它们是 C++ 函数)生成此警告。

下面的示例生成 C4297:

// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1()   // declared nothrow
// try the following line instead
// void f1()
{
   throw 1;   // C4297
}