Hata yayılımı
Bir hatayı tekrar fırlatarak çağrı zincirinde yukarı taşınmasını öğrenirsin.
Hata yayılımı
Bir catch bloğunda hatayı çözemiyorsan throw err ile tekrar fırlatırsın. Hata, çağrı zincirinde bir üst katmana iletilir ve orada yakalanır. Bu davranışa hata yayılımı (error propagation) denir. Böylece her katman yalnızca çözebildiği hataları ele alır, gerisini üst katmana bırakır.
try {
saveOrder(order);
} catch (err) {
logError(err);
throw err;
} Hatayı cause ile sarmak
Tekrar fırlatırken özgün hatayı kaybetmemek için onu yeni bir hatanın cause seçeneğiyle sarabilirsin. Bu, hata ayıklamada kaynak hatayı korur ve bağlam ekler. Sarılan hatanın .cause özelliği üzerinden özgün hataya ulaşabilirsin.
try {
fetchProfile(id);
} catch (err) {
throw new Error('Profil yüklenemedi', { cause: err });
} Uygulama Hatayı sar ve tekrar fırlat
saveOrder adlı fonksiyon order parametresi alsın. try bloğunda persist(order) çağrısı yapsın. catch bloğunda hatayı cause seçeneğiyle sarıp new Error('Sipariş kaydedilemedi', { cause: err }) biçiminde tekrar fırlatsın.
Örnek çözümü göster
function saveOrder(order) {
try {
persist(order);
} catch (err) {
throw new Error('Sipariş kaydedilemedi', { cause: err });
}
}
Kendini test et
-
Hatayı tekrar fırlat
function safeSave(data) { try { persist(data); } catch (err) { ____ err; } }Cevabı göster
function safeSave(data) { try { persist(data); } catch (err) { throw err; } } -
Bir catch bloğunda ne zaman hatayı tekrar fırlatmalısın?
- Hatayı tamamen gizlemek istediğinde
- Hatayı yerelde çözemediğinde, çağırana bırakmak için
- Konsola yazdırıp geçmek istediğinde
- Finally bloğunu atlamak istediğinde
Cevabı göster
Hatayı yerelde çözemediğinde, çağırana bırakmak için — Doğru! Çözemediğin hatayı tekrar fırlatmak çağırana bırakır.
-
Yayılım kavramlarını eşleştir
- throw err
- Hatayı yukarı iletir
- cause: err
- Kaynak hatayı saklar
- catch (err)
- Hatayı yakalar
- finally
- Temizliği her durumda yapar