CodeBlanks Logo Icon CodeBlanks

try/catch

try/catch ile hata yakalamayı öğrenirsin.

try/catch

try/catch, hata fırlatabilecek kodu güvenli biçimde çalıştırmanın yoludur. try bloğundaki kod bir hata fırlatırsa, akış catch bloğuna atlar ve hata orada yakalanır.

Örneğin try { risky(); } catch (e) { console.log(e.message); } — eğer risky() bir hata fırlatırsa e değişkenine konur ve catch bloğu çalışır. Hata yoksa catch atlanır ve normal akış devam eder. e fırlatılan Error nesnesidir; e.message, e.stack gibi özelliklerine erişebilirsin. Böylece program beklenmedik hatalarda çökmeden devam eder.

catch değişkeni

catch (e) ifadesindeki e, fırlatılan hatayı tutan değişkendir. İstediğiniz adı verebilirsin; e, err, error yaygın seçimlerdir.

Bu değişken yalnız catch bloğu içinde geçerlidir. e instanceof Error ile fırlatılan şeyin gerçekten bir Error olup olmadığını denetleyebilirsin. Ayrıca e.message ile iletiyi, e.stack ile çağrı izini alabilirsin. Eğer throw "dize" gibi Error olmayan bir değer fırlatılırsa e o değeri tutar; bu yüzden her zaman new Error() ile fırlatmak en iyi uygulamadır. Böylece hata nesnesi her zaman tutarlıdır.

Uygulama fırlat ve yakala, instanceof yazdır

risky adında bir fonksiyon tanımla; gövdesi throw new Error("test") olsun. try içinde risky()'i çağır. catch (e) içinde console.log(e instanceof Error) yazdır.

Başlangıç kodu

index.js
// risky fonksiyonu tanımla — Error fırlatsın
// try ile çağır, catch ile yakala
// instanceof Error sonucunu yazdır
// buraya yaz

Örnek çözüm

index.js
function risky() {
  throw new Error("test");
}
try {
  risky();
} catch (e) {
  console.log(e instanceof Error);
}

Beklenen çıktı

true

Soru ve cevaplar

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

1 try bloğunu tamamla

Soru
____ { risky(); } catch (e) { console.log(e.message); }
Cevap
try { risky(); } catch (e) { console.log(e.message); }

Açıklama: try bloğu riskli kodu çalıştırır.

2 Bloğu rolüne eşle

Kavram Anlamı
try Riskli kodu çalıştırır
catch Hatayı yakalar
throw Hata fırlatır
e Yakalanan hata

3 try bloğunda hata fırlatılmazsa ne olur?

index.js
try { ... } catch (e) { ... }
  • catch bloğu atlanır, normal akış devam eder Doğru cevap
  • Program çöker
  • catch yine de çalışır
  • Hata fırlatılır

Açıklama: Hata yoksa catch atlanır.

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