Поделиться через


C6318

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

Это предупреждение указывает, что при возникновении исключения в защищенном блоке данного обработчика структурированных исключений это исключение не будет обработано, поскольку в выражении фильтра исключений используется константа 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