SEH处理程序导致编译器警告和错误

时间:2014-01-24 23:23:35

标签: exception-handling seh

我在代码中使用了SEH处理程序,如下所示:

__try
{
   // code...
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
  TRACE(_T("Exception"));
}

但是得到以下编译器错误:

e:\test.cpp(3310): warning C4509: nonstandard extension used: 'CMyClass::Test' uses SEH and 'iterator' has destructor
e:\test.cpp(3290): see declaration of 'iterator'
e:\test.cpp(3450): error C2712: Cannot use __try in functions that require object unwinding

1 个答案:

答案 0 :(得分:1)

这正是错误消息所说的:您不能在需要调用析构函数的函数中使用SEH。您始终可以将__try / __except块放入子功能中。

编辑:您可以将该功能设为静态,但在我的测试中,编译器没有内联它,甚至不使用__forceinline