Назад к вопросам
Junior
78
questionbank
Всегда ли выполняется блок finally в конструкции try-catch?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Нет, не всегда. finally может не выполниться в следующих случаях:
- Завершение работы JVM во время выполнения блока
tryилиcatch. Например, при вызовеSystem.exit(). - Сбой JVM (например, out of memory error или переполнение стека).
- Бесконечный цикл в блоке
tryилиcatch. - Завершение потока, выполняющего блок
try-catch-finally.
В остальных случаях, даже при выбросе unchecked исключения или возврате из блока try или catch, блок finally будет выполнен.
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("В блоке try");
// Выход из JVM до выполнения finally
// System.exit(0);
throw new RuntimeException("Принудительное исключение");
} catch (RuntimeException e) {
System.out.println("В блоке catch: " + e.getMessage());
// Возврат из catch, finally все равно выполнится
// return;
} finally {
System.out.println("В блоке finally"); // Этот код выполняется
}
System.out.println("После try-catch-finally"); // Этот код может быть недостижим
}
}