Sobes.tech
Junior

try-catch quruluşunda həmişə finally bloku icra olunurmu?

sobes.tech Süni İntellekt

AI-dan cavab

Xeyr, həmişə deyil. finally aşağıdakı hallarda icra olunmaya bilər:

  • JVM try və ya catch blokunun icrası zamanı bağlanması. Məsələn, System.exit() çağırıldıqda.
  • JVM xətası (məsələn, yaddaş çatışmazlığı və ya yığın daşması).
  • try və ya catch blokunda sonsuz döngü.
  • try-catch-finally blokunu icra edən thread-in bağlanması.

Digər hallarda, hətta unchecked istisna atılsa və ya try və ya catch blokundan geri dönülsə də, finally bloku icra olunacaq.

public class FinallyExample {

    public static void main(String[] args) {
        try {
            System.out.println("Try blokunda");
            // JVM-dən çıxış, finally-dən əvvəl
            // System.exit(0);
            throw new RuntimeException("Məcburi istisna");
        } catch (RuntimeException e) {
            System.out.println("Catch blokunda: " + e.getMessage());
            // catch-dən geri dönüş, finally hələ də icra olunacaq
            // return;
        } finally {
            System.out.println("Finally blokunda"); // Bu kod icra olunur
        }
        System.out.println("Try-catch-finally-dən sonra"); // Bu kod əldə olunmaya bilər
    }
}