CodeBlanks Logo Icon CodeBlanks

Error handling

fetch error handling öğrenirsin.

Hata yakalama nedir?

Ağ istekleri başarısız olabilir: sunucu ulaşılamaz, URL yanlış, ağ kopmuş olabilir. Bu yüzden fetch çağrılarını try/catch bloğuna alırsın. try bloğunda istek yapılır; hata olursa catch bloğu çalışır.

Örnek: try { const res = await fetch(url); } catch (error) { console.log(error); }. Burada fetch hata verirse yürütme catch'e atlar ve error parametresi hatayı taşır. catch içinde hatayı loglayabilir, kullanıcıya mesaj gösterebilirsin. Ama dikkat: fetch yalnızca ağ hatasında reddedilir. 404 ya da 500 gibi HTTP hata durumlarında fetch reddedilmez; yanıt gelir. Bu yüzden response.ok ve response.status kontrolü de gerekir. response.ok true ise 200-299 arası durum kodu vardır, istek başarılıdır.

Uygulama try/catch ile fetch yaz

Bir async function safeLoad yaz. try bloğunda await fetch("https://api.example.com/users") çağrısını const response'a ata. catch (error) bloğunda console.log(error) çağrısı yap.

Başlangıç kodu

App.js
// async function safeLoad yaz
// try bloğunda await fetch ile response al
// hata bloğunda hatayı konsola yaz

Örnek çözüm

App.js
async function safeLoad() {
  try {
    const response = await fetch("https://api.example.com/users");
  } catch (error) {
    console.log(error);
  }
}

Kullanıcıya hata gösterme

Hata yakalandığında kullanıcıya bilgi vermek önemlidir. React'te hatayı state'e koyarsın ve ekranda gösterirsin. Örnek: const [error, setError] = useState(null); catch bloğunda setError("Veri yüklenemedi").

Bu desen, kullanıcıya ne olduğunu açıklar. Hata mesajı kısa ve net olmalı; teknik detayları kullanıcıya gösterme. Aynı zamanda yüklenme durumu için de state tutmak yaygındır: const [loading, setLoading] = useState(false). İstek başlarken setLoading(true), bitince setLoading(false). Bu sayede ekranda bir yüklenme göstergesi çizebilirsin. Üç state birlikte çalışır: veri, yüklenme, hata. Bu üçü, veri yükleme akışının temelini oluşturur ve kullanıcıya her durumda doğru geri bildirimi verir.

Soru ve cevaplar

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

1 fetch hangi durumda reddedilir (reject)?

App.js
try { await fetch(url); } catch (error) { /* ... */ }
  • Hiçbir zaman
  • Her HTTP hatada (ör. 404)
  • Yanıt JSON değilse
  • Yalnızca ağ hatasında Doğru cevap

Açıklama: fetch yalnızca ağ hatasında reddedilir; HTTP hataları için response.ok gerekir.

2 HTTP hatası kontrolü yaz

Soru
if (!____) throw new Error("HTTP hatası");
Cevap
if (!response.ok) throw new Error("HTTP hatası");

Açıklama: response.ok false ise HTTP hatası vardır.

3 Kavramı rolüne eşle

Kavram Anlamı
try İstek bloğu
catch Hata yakalar
response.ok HTTP başarısı
loading Yüklenme durumu

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