Предупреждение C6318

Недоопределенное __try/__except: использование константы EXCEPTION_CONTINUE_SEARCH или другой константы, которая оценивается как нулевая в выражении фильтра исключений. Код в блоке обработчика исключений не выполняется

Замечания

Это предупреждение указывает, что если исключение возникает в защищенном блоке этого структурированного обработчика исключений, исключение не будет обрабатываться, так как константа EXCECPTION_CONTINUE_SEARCH используется в выражении фильтра исключений.

Этот код эквивалентен защищенному блоку без блока обработчика исключений, так как блок обработчика не выполняется.

Имя анализа кода: EXCEPTIONCONTINUESEARCH

Пример

Следующий код создает это предупреждение:

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

void f (char *pch)
{
  __try
  {
    // assignment might fail
    *pch = 0;
  }
  __except (EXCEPTION_CONTINUE_SEARCH) // warning C6318
  {
    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