Asenkron hata stratejileri
Promise ve async fonksiyonlarda farklı hata yakalama stratejilerini öğrenirsin.
async fonksiyonda try/catch
Bir async fonksiyonun içinde await ile beklenen bir promise reddedilirse hata try bloğunda yakalanır. Senkron koddaki try/catch ile aynı yapıyı kullanırsın.
async function loadProfile(id) {
try {
const profile = await fetchProfile(id);
return profile;
} catch (err) {
console.error('Yükleme başarısız', err);
return null;
}
} .catch zinciri mi, try/await mi?
Promise zincirinde .catch() hatayı yakalar. async fonksiyonda ise try/await/catch daha okunaklıdır. İkisi de aynı sonucu verir; kodun akışına göre birini seçersin.
// zincir yöntemi
fetchProfile(id).catch(err => logError(err));
// async yöntem
async function load() {
try { await fetchProfile(id); }
catch (err) { logError(err); }
} Uygulama Asenkron ayar yükleme
loadSettings adlı async fonksiyon yaz. try bloğunda await fetchSettings() çağrısının sonucunu const settings değişkenine ata ve return settings ile döndür. catch (err) bloğunda console.error(err) çağrısı yapıp return null döndür.
Örnek çözümü göster
async function loadSettings() {
try {
const settings = await fetchSettings();
return settings;
} catch (err) {
console.error(err);
return null;
}
}
Kendini test et
-
Bir async fonksiyonda reddedilen promise nasıl yakalanır?
- Yalnızca .then() ile
- Yalnızca window.onerror ile
- Yalnızca finally bloğu ile
- await'i try bloğuna alıp catch ile
Cevabı göster
await'i try bloğuna alıp catch ile — Doğru! await'i try içine alıp catch ile yakalarsın.
-
await ile çağır
async function loadItem() { try { const item = ____ fetchItem(); return item; } catch (err) { logError(err); } }Cevabı göster
async function loadItem() { try { const item = await fetchItem(); return item; } catch (err) { logError(err); } } -
Stratejileri kullanımlarla eşleştir
- try + await + catch
- async fonksiyonda hata
- .catch(handler)
- promise zincirinde hata
- .finally(fn)
- temizlik her durumda
- unhandledrejection
- yakalanmamış reddedilme