이 섹션에서는 Microsoft C/C++ 최적화 컴파일러에서 구현된 구조적 예외 처리의 구문 및 사용에 대해 설명합니다. 다음 키워드는 컴파일러가 구조적 예외 처리 메커니즘의 일부로 해석합니다.
| 키워드 | 묘사 |
|---|---|
| __try | 보호된 코드 본문을 시작합니다. __except 키워드를 사용하여 예외 처리기생성하거나 __finally 키워드와 함께 종료 처리기생성합니다. |
| __except | 연결된 __try 블록 내에서 예외가 발생하는 경우에만 실행되는 코드 블록을 시작합니다. |
| __finally | 제어 흐름이 연결된 __try 블록을 떠날 때마다 실행되는 코드 블록을 시작합니다. |
| __leave | 비정상적인 종료 및 성능 저하를 일으키지 않고 __try 블록을 즉시 종료할 수 있습니다. |
또한 컴파일러는 GetExceptionCode해석하고, GetExceptionInformation, AbnormalTermination 함수를 키워드로 해석하며, 적절한 예외 처리 구문 외부에서 사용하면 컴파일러 오류가 발생합니다. 다음은 이러한 함수에 대한 간략한 설명입니다.
| 기능 | 묘사 |
|---|---|
| GetExceptionCode | 예외 유형을 식별하는 코드를 반환합니다. 이 함수는 필터 식 또는 예외 처리기 블록 내에서만 호출할 수 있습니다. |
| GetExceptionInformation | 컨텍스트 레코드 및 예외 레코드에 대한 포인터를 포함하는 EXCEPTION_POINTERS 구조체에 대한 포인터를 반환합니다. 이 함수는 예외 처리기의 필터 식 내에서만 호출할 수 있습니다. |
| AbnormalTermination | 블록에서 마지막 문을 실행한 후 제어 흐름이 연결된 __try 블록을 순차적으로 남겼는지 여부를 나타냅니다. 이 함수는 종료 처리기의 __finally 블록 내에서만 호출할 수 있습니다. |