Sobes.tech
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"); // Овај код можда неће бити достигнут
    }
}