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