C6310

警告 C6310:异常筛选器中的非法常数会导致意外的行为

此消息意味着在结构化异常处理程序的筛选器表达式中检测到一个非法常数。 为用在结构化异常处理程序的筛选器表达式中而定义的常数是:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

这些值在运行时头文件 excpt.h 中定义。

使用不在上述列表中的常数会导致意外行为。

示例

下面的代码生成此警告:

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

BOOL LimitExceeded();

void fd( )
{
  __try 
  {
    if (LimitExceeded()) 
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code 
    }
  } 
  __except (EXCEPTION_ACCESS_VIOLATION)
  {
    puts("Exception Occurred");
  }
}

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

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

BOOL LimitExceeded();

void fd( )
{
  __try 
  {
    if (LimitExceeded()) 
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code 
    }
  } 
  __except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
  {
    puts("Exception Occurred");
  }
}