Поделиться через


Предупреждение компилятора (уровень 1) C4532

"продолжить": выскочить из блока __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;
      }
   }
}