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