Всегда ли выполняется блок finally в Java
finally будет вызываться всегда после блоков try или catch. Но есть несколько сценариев когда блок finally не будет вызван, вот несколько самых популярных:
-
// Вызов System.exit(0), до finally
try {
System.out.println("try");
System.exit(0);
} finally {
System.out.println("finally"); // Не выполнится
} - Если происходит критический сбой на сервере, на котором работает приложение: сбой питания, аппаратная ошибка;
- Если в ОС принудительно завершить процесс, до вызова блока finally;