CodeBlanks Logo Icon CodeBlanks

Asenkron hata yönetimi

JavaScript kursu · Orta seviye · Ders 80/134

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

  1. 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.

  2. 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);
      }
    }
  3. 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

Orta seviye bölümündeki tüm dersler