C6310

تحذير C6310: يمكن أن يؤدي ثابت غير قانونية في عامل تصفية ‏‏ استثناء سلوك غير متوقع

وتشير هذه الرسالة إلى أن تم الكشف عن ثابت غير قانونية في تعبير عامل تصفية من معالج ‏‏ استثناء المركبة. الثوابت المعرفة من أجل استخدم في عامل تصفية الذي يتم التعبير عن معالج ‏‏ استثناء المصنفة:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

تم تعريف هذه قيم في excpt.h الملف عنوان وقت التشغيل.

استخدام ثابت التي هو في lهوt السابقة لم يسبب سلوك غير متوقع.

مثال

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

#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");
  }
}