예외 처리의 타이밍: 요약

종료 처리기에 관계 없이 실행 될 __try 는 문 블록을 종료 합니다.원인 등의 이동은 __try 블록은 longjmp 제어 블록 및 예외 처리로 인해 스택이 전달 문.

[!참고]

Visual C++ 지원 두 가지는 setjmplongjmp 문.빠른 버전 종료 처리를 무시 하지만 더 효율적입니다.이 버전을 사용 하려면 파일 SETJMP를 포함 합니다.H.앞에서 설명한 다른 버전 종료 처리를 지원 합니다.이 버전을 사용 하려면 SETJMPEX 파일을 포함 합니다.H.성능 빠른 버전의 하드웨어 구성에 따라 달라 집니다.

다른 코드에서 예외 처리기의 본문을 포함 하 여 실행 하기 전에 운영 체제를 적절 한 순서로 모든 종료 처리기를 실행 합니다.

중단 예외가 발생 하면 시스템이 먼저 예외 처리기의 필터 부분과 종료에 결정 하기 전에 실행 해야 합니다.이벤트 순서는 다음과 같습니다.

  1. 예외가 발생 합니다.

  2. 시스템 활성 예외 처리기의 계층 구조를 검색 하 고 우선 순위가 가장 높은 필터 처리기의 실행; 가장 최근에 설치 및 블록 및 함수 호출의 용어로, 가장 많이 중첩 예외 처리기입니다.

  3. 이 필터 (0 반환) 제어를 전달 하는 경우 컨트롤을 전달 하지 않는 필터를 찾을 때까지 프로세스가 계속 됩니다.

  4. 이 필터 – 1을 반환 하는 경우 예외가 발생 하 고 수행 하지 종료 됩니다 실행을 계속 합니다.

  5. 1 해당 필터를 반환 하는 경우 다음 이벤트가 발생 합니다.

    • 시스템 스택 해제 모든 스택 프레임 (예외가 발생 한)을 현재 실행 중인 코드와 컨트롤에 대 한 예외 처리기를 포함 하는 스택 프레임을 해제 합니다.

    • 스택이 해제 됩니다 때 스택의 각 종료 처리기가 실행 됩니다.

    • 예외 처리기가 실행 됩니다.

    • 컨트롤 코드의 줄으로 끝이 예외 처리기에 전달합니다.

참고 항목

참조

종료 처리기를 작성합니다.

구조적된 예외 처리 (C++)