다음을 통해 공유


(구조적) C 및 C++ 예외를 혼합 합니다.

이식성 코드를 작성 하는 경우 구조적된 예외 처리는 C++ 프로그램에서 사용 하지 않는 것이 좋습니다.그러나 그러나 컴파일할 할 수 /EHa 와 구조적된 예외와 C++ 소스 코드를 혼합 하 고 두 종류의 예외를 처리 하는 일부 기능이 필요한.구조적된 예외 처리기의 개체 또는 형식화 된 예외를 사용 하지 않으므로 C++ 코드에서 throw 되는 예외를 처리할 수 없습니다. 그러나 C++ catch 구조적된 예외 처리기에서 처리 됩니다.구문 등을 C++ 예외와 (시도, throw, catch) C 컴파일러, 하지만 구조적된 예외 처리 구문에서 허용 되지 않습니다 (__try, __except, __finally) C++ 컴파일러에 의해 지원 됩니다.

참조 하십시오 _set_se_translator 에 대 한 내용은 구조적된 예외와 C++ 예외 처리 합니다.

함께 사용할 경우 구조와 C++ 예외는 다음 참고:

  1. 같은 함수 내에서 구조적된 예외와 C++ 예외 혼합할 수 없습니다.

  2. 종료 처리기 (__finally 블록) 항상, 예외가 발생 한 후를 경우에 해제 하는 동안 실행 됩니다.

  3. 수 있는 C++ 예외 처리를 catch 하 고 유지로 컴파일된 모든 모듈에서 의미를 해제를 /EH 컴파일러 옵션 (이 옵션 해제 의미 체계가 활성화).

  4. 소멸자에서 함수 모든 개체에 대해 호출 되지 않는 경우도 있을 수 있습니다.예를 들어 구조적된 예외는 초기화 되지 않은 함수 포인터를 통해 호출 하는 함수를 확인 하는 중 오류가 발생 하 고 해당 함수를 호출 하기 전에 생성 된 매개 변수 개체와 사용 하는 경우 해당 개체 스택 해제 중 호출 하는 소멸자가 없습니다.

추가 정보

참고 항목

참조

C + + 예외 처리