CodeBlanks Logo Icon CodeBlanks

finally

finally ile temizlik bloğunu öğrenirsin.

finally

Bir try bloğundan sonra finally bloğu eklenebilir. Bu blok, ister hata oluşsun ister oluşmasın, her zaman çalışır. Temizlik işlemleri için kullanılır: dosya kapatma, bağlantı sonlandırma, bayrak sıfırlama.

Örnek: try { ac(); isle(); } catch (e) { print(e); } finally { kapat(); }. kapat() hem başarılı hem başarısız durumda çağrılır. Hata yakalansa bile program durmadan önce finally çalışır. finally olmadan da kod yazılabilir; ama kaynak sızdırmamak için eklenmesi iyi bir alışkanlıktır.

Sıra: try, catch, finally

Üç blok birlikte sırayla çalışır. Önce try içindeki kod yürütülür. Hata çıkarsa catch çalışır. En son finally her durumda çalışır. Hata catch tarafından yakalanmazsa bile finally yine de çalışır; sonra hata yukarıya yayılır.

Tipik bir desen: ac(), isle(), kapat(). kapat() finally içinde olmalı ki isle() hata verse bile kaynak serbest bırakılsın. finally içinde return yazabilirsin ama bu önerilmez; çünkü try veya catch içindeki return'ü ezer ve kod okunurluğunu bozar.

Uygulama Sıra sende: finally ile temizlik

Bir String değişkeni mesaj'ı başta "açık" olarak ata. try içinde int.parse'i sayı olmayan bir dizeyle çağır. catch (e) içinde mesaj'ı "hata" yap. finally içinde mesaj'ı "kapalı" yap ve print(mesaj) ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // mesaj = "açık"
  // try ile sayıya çevirmeyi dene
  // hata durumunda mesaj = "hata"
  // finally ile mesaj = "kapalı" ve yazdır
}

Örnek çözüm

main.dart
void main() {
  var mesaj = "açık";
  try {
    int.parse("elma");
  } catch (e) {
    mesaj = "hata";
  } finally {
    mesaj = "kapalı";
    print(mesaj);
  }
}

Beklenen çıktı

kapalı

Soru ve cevaplar

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

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

main.dart
try {
  isle();
} catch (e) {
  print(e);
} finally {
  kapat();
}
  • Her zaman
  • Yalnızca hata olunca
  • Yalnızca başarı olunca Doğru cevap
  • Hiçbir zaman

Açıklama: finally her durumda çalışır.

2 finally bloğu

Soru
try {
  isle();
} catch (e) {
  print(e);
} ____ {
  kapat();
}
Cevap
try {
  isle();
} catch (e) {
  print(e);
} finally {
  kapat();
}

Açıklama: finally bloğu temizliği yapar.

3 try/catch/finally eşleştir

Kavram Anlamı
try riskli kodu taşır
catch hatayı yakalar
finally temizliği yapar
kapat() finally içinde çağrılır

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