Предупреждение компилятора (уровень 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;
}
}
}