다음을 통해 공유


종료 처리

‘종료 처리기’는 제어 흐름이 보호된 특정 코드 본문을 벗어날 때마다 특정 코드 블록이 실행되도록 합니다. 종료 처리기는 다음 요소로 구성됩니다.

  • 보호된 코드 본문
  • 제어 흐름이 보호된 본문을 벗어날 때 실행할 종료 코드 블록

종료 처리기는 언어별 구문으로 선언됩니다. Microsoft C/C++ 최적화 컴파일러를 사용하여 __try__finally를 사용하여 구현됩니다. 자세한 내용은 처리기 구문을 참조하세요.

보호된 코드 본문은 코드 블록, 중첩된 블록 집합 또는 전체 프로시저나 함수일 수 있습니다. 보호된 본문이 실행될 때마다 종료 코드 블록이 실행됩니다. 유일한 예외는 보호된 본문을 실행하는 동안 스레드가 종료되는 경우입니다(예: ExitThread 또는 ExitProcess 함수가 보호된 본문 내에서 호출되는 경우).

종료 블록은 보호된 본문이 정상적으로 종료되었는지 또는 비정상적으로 종료되었는지에 관계없이 제어 흐름이 보호된 본문을 벗어날 때 실행됩니다. 보호된 본문은 블록의 마지막 문이 실행되고 제어가 종료 블록으로 순차적으로 진행될 때 정상적으로 종료된 것으로 간주됩니다. 비정상적인 종료는 컨트롤 흐름이 예외로 인해 또는 return, goto, break, continue와 같은 제어 문으로 인해 보호된 본문을 벗어날 때 발생합니다. 종료 블록 내에서 AbnormalTermination 함수를 호출하여 보호된 본문이 정상적으로 종료되었는지 여부를 확인할 수 있습니다.