컴파일러 오류 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");
}
}