CodeBlanks Logo Icon CodeBlanks

finally

finally bloğunu öğrenirsin.

finally her zaman çalışır

finally bloğu istisna çıksa da çıkmasa da her zaman çalışır. Kaynakları temizlemek (dosya kapatma, bağlantı bırakma) için kullanılır.

try {
  int r = 10 / 0;
} catch (ArithmeticException e) {
  System.out.println("Hata");
} finally {
  System.out.println("Temizlik");
}

finally, catch'ten sonra gelir; tek başına try ile de kullanılabilir. İstisna yakalansa bile program sonlanmadan önce finally kesinlikle yürütülür. Bu özellik kaynak sızıntısını önlemenin güvenli yoludur.

finally catch olmadan da çalışır

finally bir catch olmadan da kullanılabilir. Bu durumda istisna yakalanmaz ama temizlik yine de yapılır; istisna daha üst katmana yayılır.

try {
  int r = 10 / 0;
} finally {
  System.out.println("Temizlik");
}

Bu yapı, hatayı yönetmek istemeyen ama kaynağı yine de kapatmak isteyen kodda yararlıdır. try-with-resources bu düzenin kısa bir alternatifidir. finally içinde return yazmak teknik olarak mümkündür ama kaçınılmalıdır; çünkü beklenmeyen sonuçlar doğurabilir.

Uygulama try/catch/finally yaz

int a = 10; int b = 0; değerlerini böl. try içine al; ArithmeticException yakala ve Hata yazdır. finally bloğunda Temizlik yazdır.

Başlangıç kodu

Main.java
public class Main {
  public static void main(String[] args) {
    int a = 10;
    int b = 0;
    // bölmeyi dene, hatayı yakala, finally ile temizlik yap
  }
}

Örnek çözüm

Main.java
try {
  int result = a / b;
  System.out.println(result);
} catch (ArithmeticException e) {
  System.out.println("Hata");
} finally {
  System.out.println("Temizlik");
}

Beklenen çıktı

Hata
Temizlik

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 finally bloğunu ekle

Soru
try {
  int r = 10 / 0;
} catch (ArithmeticException e) {
  System.out.println("Hata");
} ____ {
  System.out.println("Temizlik");
}
Cevap
try {
  int r = 10 / 0;
} catch (ArithmeticException e) {
  System.out.println("Hata");
} finally {
  System.out.println("Temizlik");
}

Açıklama: finally catch'ten sonra gelir ve her zaman çalışır.

2 Bloğu çalışma zamanıyla eşleştir

Kavram Anlamı
try Riskli kod
catch Hata olunca
finally Her zaman
else try'de değil

3 finally bloğu ne zaman çalışır?

  • Yalnızca istisna olunca
  • Hiçbir zaman
  • Her zaman (istisna olsa da olmasa da) Doğru cevap
  • Yalnızca istisna olmayınca

Açıklama: finally her durumda çalışır; istisna çıksa da çıkmasa da.

Başlangıç bölümündeki tüm dersler