다음을 통해 공유


AbnormalTermination 매크로

종료 처리기의 __try 블록이 정상적으로 종료되었는지 여부를 나타냅니다. 이 함수는 종료 처리기의 __finally 블록 내에서만 호출할 수 있습니다.

참고

Microsoft C/C++ 최적화 컴파일러는 이 함수를 키워드로 해석하고 적절한 예외 처리 구문 외부에서 사용하면 컴파일러 오류가 발생합니다.

구문

BOOL AbnormalTermination(void);

매개 변수

이 매크로에는 매개 변수가 없습니다.

반환 값

__try 블록이 비정상적으로 종료된 경우 반환 값은 0이 아닌 값입니다.

__try 블록이 정상적으로 종료되면 반환 값은 0입니다.

설명

__try 블록은 블록에서 마지막 문을 실행한 후 실행이 블록을 순차적으로 종료하는 경우에만 일반적으로 종료됩니다. 실행이 __try 블록을 벗어나도록 하는 문(예: return, goto, continue 또는 break)은 블록이 비정상적으로 종료됩니다. 이러한 문이 __try 블록의 마지막 문인 경우에도 마찬가지입니다.

__try 블록이 비정상적으로 종료되면 시스템에서 모든 스택 프레임을 뒤로 검색하여 종료 처리기를 호출해야 하는지 여부를 결정합니다. 이로 인해 수백 개의 명령이 실행될 수 있으므로 반환, goto, continue 또는 break 문으로 인해 __try 블록이 비정상적으로 종료되지 않도록 하는 것이 중요합니다. 종료가 비정상적인 경우에도 이러한 문은 예외를 생성하지 않습니다.

비정상적인 종료를 방지하려면 실행이 블록 끝까지 계속 진행되어야 합니다. __leave 문을 실행할 수도 있습니다. __leave 문을 사용하면 비정상적인 종료 및 성능 저하를 일으키지 않고 __try 블록을 즉시 종료할 수 있습니다. 컴파일러 설명서를 확인하여 __leave 문이 지원되는지 확인합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
WINDOWS XP [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2003 [데스크톱 앱만 해당]

추가 정보

구조적 예외 처리 함수

구조적 예외 처리 개요