C6318

تحذير C6318: ill-defined __try/__except: استخدام EXCEPTION_CONTINUE_SEARCH ثابتة أو ثابت آخر يتم تقييمها إلى الصفر في استثناء-عامل تصفية التعبير. تعليمات برمجية في حظر معالج ‏‏ استثناء هو لم يتم تنفيذها

Th هو يشير التحذير إلى أنه في حالة حدوث استثناء في حظر th المحمية هو معالج ‏‏ استثناء مصنفة، ستتم معالجته ‏‏ استثناء لا لأن ثابتة EXCECPTION_CONTINUE_SEARCHهو المستخدمة في تعبير عامل تصفية ‏‏ استثناء.

Th هو رمز هو مساوية لحظر محمي بدون حظر معالج ‏‏ استثناء نظراً لحظر المعالج هو لم يتم تنفيذه.

مثال

يلي تعليمات برمجية ينشئ هذا التحذير:

#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