Junior
Da li se u konstrukciji try-catch uvek izvršava blok finally?
sobes.tech АИ
Одговор од АИ
Не, не увек. finally може да не се изврши у следећим случајевима:
- Заустављање JVM током извршавања блока
tryилиcatch. На пример, при позивуSystem.exit(). - Грешка JVM (нпр., грешка недостатка меморије или преливање стека).
- Бесконачна петља у блоку
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"); // Овај код можда неће бити достигнут
}
}