Asenkron hata yönetimi
async fonksiyonlarda try/catch ile hata yakalamayı öğrenirsin.
try/catch ile asenkron hata yakalama
Promise zincirinde catch kullanıyorsun; async/await'te ise try...catch bloğu kullanırsın. Bir async fonksiyonda await ile beklenen promise reddedilirse, hata catch bloğuna düşer.
async function loadPost() {
try {
const post = await fetchPost();
} catch (err) {
console.error(err);
}
}Bu yapı, senkron koddaki hata yönetimine benzer; bu yüzden async/await daha okunaklı kabul edilir.
Hatayı yeniden fırlatma
Bazen bir hatayı yakaladıktan sonra çağırana iletmek istersin. Bunun için catch bloğunda throw ile hatayı tekrar fırlatırsın. Çağıran kod bunu kendi try/catch'iyle yakalar.
async function loadItem() {
try {
return await fetchItem();
} catch (err) {
console.error('Yükleme başarısız');
throw err;
}
}Bu desen, hatayı loglayıp aynı zamanda üst katmana iletmeni sağlar.
Uygulama Hata yakalama ekle
async function loadOrder() yaz. İçinde try bloğunda await fetchOrder() çağırıp sonucu order değişkenine ata. Bir catch (err) bloğu ekle ve console.error(err) ile hatayı yazdır.
Örnek çözümü göster
async function loadOrder() {
try {
const order = await fetchOrder();
} catch (err) {
console.error(err);
}
}
Kendini test et
-
Aşağıdaki kod ne yapar?
async function f() { try { const x = await Promise.reject(new Error('boom')); } catch (err) { console.log(err.message); } }- 'boom' yazdırır
- Yakalanmamış hata fırlatır
- undefined yazdırır
- Hiçbir şey yapmaz
Cevabı göster
'boom' yazdırır — Doğru! Reddedilen promise'in hatası catch bloğuna düşer ve mesajı yazdırılır.
-
catch bloğunu ekle
async function loadItem() { try { const item = await fetchItem(); } ____ { console.error(err); } }Cevabı göster
async function loadItem() { try { const item = await fetchItem(); } catch { console.error(err); } } -
Hata yönetimi kavramlarını eşleştir
- await Promise.reject(err)
- catch bloğuna düşer
- try { await ... }
- başarılıysa try içinde devam eder
- throw err
- hatayı çağırana iletir
- catch (err)
- err ile hatayı alırsın