CodeBlanks Logo Icon CodeBlanks

finally bloğu

JavaScript kursu · Başlangıç · Ders 120/133

finally ile hata olsa da olmasa da çalışması gereken temizlik kodunu öğrenirsin.

finally blogu

finally bloğu try ve catch'ten sonra gelir ve hata olsa da olmasa da her zaman çalışır. Bu özellik, temizlik işlemleri için idealdir: dosyayı kapatma, süreölçeri temizleme veya bayrak sıfırlama gibi işlemleri finally içine yazarsın.

Örnek: try { riskyCode(); } catch (e) { console.error(e); } finally { cleanup(); }. Burada cleanup() hem hatasız hem de hatalı durumda çalışır. finally atlanamaz; hatta return bile olsa finally yine de yürütülür.

finally ne zaman kullanılır?

finally özellikle kaynak temizliği için kullanılır: dosya kapatma, veritabanı bağlantısı kesme, süreölçeri durdurma gibi. return ile fonksiyondan çıkılsa bile finally yine de çalışır; bu yüzden önemli temizlik kodunu buraya koymak güvenlidir.

Örnek: bir dosya açtın ve işlem yaparken hata oluştu. catch hatayı yakalar, ama dosyayı kapatmak finally'ye ait bir iştir. Böylece dosya her zaman kapanır ve kaynak sızıntısı oluşmaz. finally isteğe bağlıdır; yalnızca try...catch de yazılabilir.

Uygulama try/catch/finally ile süreölçer yönetimi

runWithTimer adında bir fonksiyon tanımla. try bloğunda console.time("islem") çağrısı yapsın, ardından console.log("Çalışıyor") çağrısı yapsın. catch (e) bloğunda console.error(e.message) çağrısı yapsın. finally bloğunda console.timeEnd("islem") çağrısı yapsın.

Örnek çözümü göster
function runWithTimer() {
  try {
    console.time("islem");
    console.log("Çalışıyor");
  } catch (e) {
    console.error(e.message);
  } finally {
    console.timeEnd("islem");
  }
}

Kendini test et

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

    try { work(); } catch (e) { log(e); } finally { done(); }
    • Yalnızca try başarılı olursa
    • Yalnızca catch çalıştıysa
    • Hata olsa da olmasa da her zaman
    • Yalnızca throw çağrıldıysa
    Cevabı göster

    Hata olsa da olmasa da her zaman — Doğru. finally her zaman çalışır; hata durumu önemli değildir.

  2. finally bloğunu ekle

    try {
      startTimer();
    } catch (e) {
      console.error(e);
    } ____ {
      stopTimer();
    }
    Cevabı göster
    try {
      startTimer();
    } catch (e) {
      console.error(e);
    } finally {
      stopTimer();
    }
  3. finally kullanım senaryolarını eşleştir

    Dosya açma
    finally ile kapatma
    Süreölçer başlatma
    finally ile durdurma
    Bayrak ayarlama
    finally ile sıfırlama
    Geçici değişiklik
    finally ile geri alma

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