C6318
警告 C6318: 正しく定義されていない __try および __except です: 定数 EXCEPTION_CONTINUE_SEARCH または例外フィルター式で 0 に評価される別の定数が使用されています。例外ハンドラー ブロックのコードは実行されません
この警告は、この構造化例外ハンドラーの保護されたブロックで例外が発生した場合、定数 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");
}
}