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
tryveyacatchbloğ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ı).
tryveyacatchbloğunda sonsuz döngü.try-catch-finallybloğ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
}
}