CodeBlanks Logo Icon CodeBlanks

Global hata yakalama

JavaScript kursu · Orta seviye · Ders 104/134

window.onerror ve unhandledrejection ile yakalanmamış hataları toplamayı öğrenirsin.

Yakalanmamış hataları toplama

try/catch dışında kalan hatalar tarayıcının konsoluna düşer. window.addEventListener('error', handler) ile bunları merkezi olarak yakalarsın. İşleyici, hatanın message, filename ve lineno bilgilerini alır. Bu dinleyiciler, kullanıcıların yaşadığı gerçek hataları bir hata raporlama servisine göndermenin temel yoludur. Böylece üretimdeki sorunları görünür hale getirirsin.

window.addEventListener('error', (event) => {
  reportError(event.message, event.filename);
});

unhandledrejection olayı

Bir promise reddedilir ve hiç .catch bağlanmazsa unhandledrejection olayı tetiklenir. İşleyici event.reason özelliğinden reddedilme sebebini alır. Reddedilme sebebi genellikle bir Error nesnesi veya bir dizedir. Bu olayı dinleyerek, yakalanmamış promise hatalarını da senkron hatalar gibi kaydedebilir ve analiz edebilirsin.

window.addEventListener('unhandledrejection', (event) => {
  console.error('Reddedildi:', event.reason);
});

Bu olay, hata raporlama servislerinin temelidir.

Uygulama Global dinleyicileri yaz

İki olay dinleyicisi yaz. Birincisi window.addEventListener('error', handler) ile event.message değerini reportError fonksiyonuna göndersin. İkincisi window.addEventListener('unhandledrejection', handler) ile event.reason değerini reportError fonksiyonuna göndersin.

Örnek çözümü göster
window.addEventListener('error', (event) => {
  reportError(event.message);
});
window.addEventListener('unhandledrejection', (event) => {
  reportError(event.reason);
});

Kendini test et

  1. Hangi olay yakalanmamış promise reddedilmelerini yakalar?

    • window.onerror
    • unhandledrejection
    • beforeunload
    • DOMContentLoaded
    Cevabı göster

    unhandledrejection — Doğru! unhandledrejection olayı reddedilmeleri yakalar.

  2. Reddedilme olayını ekle

    window.addEventListener(____, (event) => {
      logRejection(event.reason);
    });
    Cevabı göster
    window.addEventListener('unhandledrejection', (event) => {
      logRejection(event.reason);
    });
  3. Olayları kaynaklarıyla eşleştir

    error
    Senkron çalışma hatası
    unhandledrejection
    Yakalanmamış promise
    event.message
    Hata metni
    event.reason
    Reddedilme sebebi

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