Блок finally предназначен для выполнения после оператора try-catch, но есть конкретные сценарии, когда он не будет запущен:
Блок finally не выполнится, если программа явно завершает виртуальную машину Java с помощью System.exit(). Этот вызов немедленно останавливает процесс JVM без возможности выполнить какие-либо блоки finally.
System.exit(), все потоки завершаются мгновенноКритическая ошибка, которая приводит к падению JVM, также помешает выполнению блока finally. Сюда относятся такие сценарии, как:
Когда JVM падает из-за критической ошибки, процесс завершается аварийно, и блоки finally не могут выполниться.
Хотя это встречается реже, есть и другие граничные случаи, когда блоки finally могут не выполниться:
При нормальном выполнении приложения блок finally отработает надёжно. Он пропускается лишь в исключительных ситуациях, связанных с завершением JVM или критическими ошибками, которые выходят за рамки обычной обработки исключений в Java.
Блок finally не будет выполнен, если вызвать System.exit() в блоке try или catch, потому что процесс JVM прерывается сразу.
Новый — ещё не проверен сообществом
Вы