finally
- Dart kursu
- Başlangıç
- Ders 102/116
- 5 dk
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
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
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?
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
try {
isle();
} catch (e) {
print(e);
} ____ {
kapat();
}
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 |