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