다음을 통해 공유


문 (C) try-finally

Microsoft 전용

try-finally Microsoft 응용 프로그램 코드 블록의 실행이 중단 되는 경우 정리 코드를 실행을 보장할 수 있도록 C 언어 확장입니다.정리의 메모리 할당 해제, 파일을 닫고 파일 핸들을 해제 하는 등의 작업으로 구성 됩니다.try-finally 여러 위치 어디 한 일으킬 수 오류에 대 한 완전 한 루틴을 루틴에서 반환에 대 한 문을 특히 유용할 수 있습니다.

  • try-finally-문의:
    __try 복합 문

    __finally 복합 문

복합 문이 뒤에 __try 절 보호 구역입니다.복합 문이 뒤에 __finally 절 종료 처리기입니다.처리기의 보호 된 섹션을 마치고 예외 (비정상적인 종료) 또는 표준 폴 (정상 종료)을 통해 보호 된 섹션의 종료 여부를 실행 하는 작업 집합을 지정 합니다.

충전 제어는 __try 문에서 간단한 순차 실행 (이동) 합니다.컨트롤에 입력할 때의 __try 문, 연결 된 처리기 됩니다 활성.실행은 다음과 같이 진행 됩니다.

  1. 보호 된 섹션을 실행 합니다.

  2. 종료 처리기가 호출 됩니다.

  3. 종료 처리기가 완료 되 면 계속 실행 한 후에 __finally 문입니다.섹션 끝에 방법에 관계 없이 보호 (예를 들어,을 통해는 goto 보호 된 본문 중 또는 통해 정보 보호는 return 문), 제어 흐름 보호 된 섹션을 이동 하기 전에 종료 처리기가 실행 됩니다.

__leave 키워드를 사용할 수 있는 try-finally 문 블록입니다.효과를 __leave 의 끝으로 이동 하는 것은 try-finally 블록입니다.즉시 종료 처리기가 실행 됩니다.하지만 goto 문을 사용 하 여 동일한 결과 얻을 수 있는 goto 문 스택 해제.__leave 스택 해제가 포함 되지 않은 때문에 문에 더 효율적입니다.

종료는 try-finally 문을 사용 하는 return 문 나는 longjmp 함수 실행 시간 비정상적인 종료 것으로 간주 합니다.로 이동할 수 없습니다는 __try 문, 하지만 법 중 하나를 이동할 수 있습니다.모든 __finally 출발 지점과 대상 간에 진행 중인 명령문을 실행 해야 합니다.이 "로컬 해제" 라고

실행 하는 동안 프로세스가 종료 될 경우 종료 처리기가 호출 되는 try-finally 문입니다.

[!참고]

구조적된 예외 처리는 C 및 C++ 소스 파일에서 작동합니다.그러나이 특히 C++에 대 한 설계 되지 않았습니다.C + + 예외 처리를 사용 하 여 코드를 이식 수를 확인할 수 있습니다.모든 형식의 예외를 처리할 수 있다는 점에서 C++ 예외 처리 메커니즘 훨씬 유연한 이기도 합니다.

[!참고]

C + + 프로그램에서 C++ 예외 처리 대신 구조적된 예외 처리 사용 해야 합니다.자세한 내용은 예외 처리C++ 언어 참조.

예제를 참조 하십시오은 시도-문을 제외 하 고 볼 수는 어떻게 try-finally 문 작동 합니다.

Microsoft 특정 끝

참고 항목

참조

try-finally 문