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


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

"продолжить": для перехода из блока __finally/finally не определено поведение при обработке завершения

Компилятор обнаружил одно из следующих ключевых слов:

что вызвало переход из блока __finally или finally во время аварийного завершения.

При возникновении исключения, когда стек развертывается во время выполнения обработчиков завершения (блоков __finally или блоков finally), и код переходит из блока __finally до завершения блока __finally, поведение не задано. Элемент управления не может быть возвращен в развертываемый код, поэтому исключение не может быть обработано должным образом.

Если необходим переход из блока __finally, следует вначале выполнить проверку на предмет аварийного завершения.

Следующий пример также демонстрирует причины возникновения ошибки 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;
      }
   }
}