다음을 통해 공유


컴파일러 경고(수준 1) C4532

'continue': 종료 처리 중 정의되지 않은 동작이 있는 __finally/finally 블록에서 점프

설명

컴파일러에서 다음 키워드 중 하나를 발견했습니다.

비정상적인 종료 중 또는 finally 블록에서 __finally 점프를 발생시키는 경우

예외가 발생하고 종료 처리기를 실행하는 동안 스택이 해제되고(__finally또는 마지막으로 차단) 블록이 종료되기 전에 __finally 코드가 블록 밖으로 __finally 이동하면 동작이 정의되지 않습니다. 컨트롤이 해제 코드로 반환되지 않을 수 있으므로 예외가 제대로 처리되지 않을 수 있습니다.

블록 밖으로 __finally 이동해야 하는 경우 먼저 비정상적인 종료를 확인합니다.

/sdl(추가 보안 검사 사용) 컴파일러 옵션은 이 경고를 오류로 승격합니다.

예시

다음 샘플에서는 C4532를 생성합니다. 점프 문을 삭제하거나 주석 처리하여 경고를 해결합니다.

// C4532.cpp
// compile with: /W1
// C4532 expected
int main() {
   int i;
   for (i = 0; i < 10; i++) {
      __try {
      } __finally {
         // Delete the following line to resolve.
         continue;
      }

      __try {
      } __finally {
         // Delete the following line to resolve.
         break;
      }
   }
}