Sobes.tech
Junior

Try-catch түзүмүндө ар дайым finally блогу ишке ашабы?

sobes.tech AI

AIден жооп

Жок, ар дайым эмес. 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ден кийин"); // Бул код жетпей калышы мүмкүн
    }
}