Sobes.tech
Junior

try-catch yapısında finally bloğu her zaman çalışır mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Hayır, her zaman değil. finally aşağıdaki durumlarda çalışmayabilir:

  • JVM'nin try veya catch bloğu sırasında sonlandırılması. Örneğin, System.exit() çağrısı yapıldığında.
  • JVM hatası (örneğin, bellek hatası veya yığın taşması).
  • try veya catch bloğunda sonsuz döngü.
  • try-catch-finally bloğunu çalıştıran thread'in sonlandırılması.

Diğer durumlarda, unchecked istisna atılsa veya try veya catch bloğundan dönüş yapılsa bile, finally bloğu çalışacaktır.

public class FinallyExample {

    public static void main(String[] args) {
        try {
            System.out.println("Try bloğunda");
            // finally çalışmadan JVM'den çıkış
            // System.exit(0);
            throw new RuntimeException("Zorunlu istisna");
        } catch (RuntimeException e) {
            System.out.println("Catch bloğunda: " + e.getMessage());
            // catch'ten dönüş, finally yine de çalışır
            // return;
        } finally {
            System.out.println("Finally bloğunda"); // Bu kod çalışır
        }
        System.out.println("Try-catch-finally'den sonra"); // Bu kod erişilmeyebilir
    }
}