try/catch
- Node.js kursu
- Başlangıç
- Ders 96/116
- 5 dk
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
// 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
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
async function run() {
try {
await Promise.reject(new Error("hata"));
} ____ (err) {
console.log(err.message);
}
}
async function run() {
try {
await Promise.reject(new Error("hata"));
} catch (err) {
console.log(err.message);
}
}
Açıklama: catch parametre olarak hatayı alır.