finally bloğu
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
-
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.
-
finally bloğunu ekle
try { startTimer(); } catch (e) { console.error(e); } ____ { stopTimer(); }Cevabı göster
try { startTimer(); } catch (e) { console.error(e); } finally { stopTimer(); } -
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