다음을 통해 공유


컴파일러 오류 C2707

'identifier': 내장 함수에 대한 잘못된 컨텍스트

구조적 예외 처리 내장 함수는 특정 컨텍스트에서 유효하지 않습니다.

  • _exception_code() 예외 필터 또는 __except 블록 외부

  • _exception_info() 예외 필터 외부

  • _abnormal_termination()__finally 블록 외부

오류를 해결하려면 예외 처리 내장 함수가 적절한 컨텍스트에 배치되어 있는지 확인합니다.

예시

다음 샘플에서는 C2707을 생성합니다.

// C2707.cpp
#include <windows.h>
#include <stdio.h>

LONG MyFilter(LONG excode)
{
    return (excode == EXCEPTION_ACCESS_VIOLATION ?
        EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);   // OK
}

LONG func(void)
{
    int x, y;
    return(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?  // C2707
             EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);

    __try
    {
        y = 0;
        x = 4 / y;
        return 0;
     }

    __except(MyFilter(GetExceptionCode()))
    {
        return(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? // ok
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);
    }
}

int main()
{
    __try
    {
        func();
    } __except(EXCEPTION_EXECUTE_HANDLER)
    {
        printf_s("Caught exception\n");
    }
}