C6318

警告 C6318:__try/__except 未正确定义: 在异常筛选器表达式中使用了常数 EXCEPTION_CONTINUE_SEARCH 或另一个计算结果为 0 的常数。 异常处理程序块中的代码将不会执行

此警告意味着,如果该结构化异常处理程序的受保护块中出现异常,将不会处理该异常,因为异常筛选器表达式中使用了 EXCECPTION_CONTINUE_SEARCH 常数。

由于不执行该处理程序块,因此该代码等效于不带异常处理程序块的受保护块。

示例

下面的代码生成此警告:

#include <excpt.h>
#include <stdio.h>

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except (EXCEPTION_CONTINUE_SEARCH) // warning 6318
  {
    puts("Exception Occurred");
  }
}

若要更正此警告,请使用下面的代码:

#include <excpt.h>
#include <stdio.h>
#include <windows.h>

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except( (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) ?
                EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH )
  {
    puts("Access violation");
  }
} 

请参见

参考

try-except Statement