CodeBlanks Logo Icon CodeBlanks

try/catch

async function'da try/catch ile hata yakalamayı öğrenirsin.

try/catch ile hata yakala

Async bir işlevde hatayı yakalamak için try/catch bloğu kullanırsın. await çağrısını try içine alırsın; Promise reddedilirse akış catch bloğuna geçer ve hatayı yakalarsın.

async function run() {
  try {
    const v = await Promise.reject(new Error("hata"));
  } catch (err) {
    console.error(err.message);
  }
}

Bu biçim, senkron kodun hata yakalama mantığıyla aynıdır; bu yüzden async kodu okuması kolaydır. catch bloğundan bir değer döndürürsen, işlev normale dönmüş gibi Promise ile o değeri verir.

catch ile kurtarma

catch bloğu hatayı yakaladıktan sonra normal bir değer döndürebilir; bu durumda async işlev normale dönmüş gibi fulfilled olur. Bu sayede hatadan sonra alternatif bir yol izleyebilirsin.

async function run() {
  try {
    await Promise.reject(new Error("x"));
  } catch (err) {
    return "kurtarıldı";
  }
}
run().then(v => console.log(v)); // kurtarıldı

Burada catch bloğu "kurtarıldı" döndürdüğü için run() çağrısı fulfilled olur ve then çalışır. Bu örüntü, hataya dayanıklı (resilient) kod yazmanın temelidir.

Uygulama Sıra sende: try/catch ile await

async function run() tanımla. try bloğu içinde const v = await Promise.reject(new Error("hata")) yaz. catch (err) bloğu içinde console.log(err.message) yaz. Sonra run() çağır.

Başlangıç kodu

index.js
// async function run tanımla
// try içinde await Promise.reject, catch içinde console.log(err.message)
// en sonda run'u çağır

Örnek çözüm

index.js
async function run() {
  try {
    const v = await Promise.reject(new Error("hata"));
  } catch (err) {
    console.log(err.message);
  }
}
run();

Beklenen çıktı

hata

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 try/catch parçaları

Kavram Anlamı
try riskli await
catch hatayı yakalar
err hata nesnesi

2 await ile beklenen Promise reddedilirse ve try/catch YOKSA ne olur?

  • await değeri undefined olur
  • Promise otomatik fulfilled olur
  • Async function reddedilen bir Promise döndürür Doğru cevap
  • Program hemen çöker

Açıklama: Yakalanmayan hata işlevden dışarı reddedilen Promise olarak çıkar.

3 Boşluğu doldur: catch bloğu

Soru
async function run() {
  try {
    await Promise.reject(new Error("hata"));
  } ____ (err) {
    console.log(err.message);
  }
}
Cevap
async function run() {
  try {
    await Promise.reject(new Error("hata"));
  } catch (err) {
    console.log(err.message);
  }
}

Açıklama: catch parametre olarak hatayı alır.

Başlangıç bölümündeki tüm dersler