次の方法で共有


警告 C6318

__try/__except定義されていません: 例外フィルター式で 0 に評価される定数 EXCEPTION_CONTINUE_Standard Edition ARCH または別の定数を使用します。 例外ハンドラー ブロックのコードは実行されません

解説

この警告は、この構造化例外ハンドラーの保護されたブロックで例外が発生した場合、例外フィルター式で定数 EXCECPTION_CONTINUE_SEARCH が使用されるため、例外は処理されません。

このコードは、ハンドラー ブロックが実行されないため、例外ハンドラー ブロックのない保護されたブロックと同じです。

コード分析名: EXCEPTIONCONTINUESEARCH

この警告が発生するコード例を次に示します。

#include <excpt.h>
#include <stdio.h>

void f (char *pch)
{
  __try
  {
    // assignment might fail
    *pch = 0;
  }
  __except (EXCEPTION_CONTINUE_SEARCH) // warning C6318
  {
    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 ステートメント