Sobes.tech
Middle

Jak śledzisz i monitorujesz błędy w JavaScript?

sobes.tech AI

Odpowiedź od AI

Błędy w JavaScript monitoruję i śledzę w następujący sposób:

  • Konsola przeglądarki: Główne narzędzie do debugowania na etapie rozwoju. Komunikaty o błędach (syntetyczne, logiczne, runtime) są wyświetlane z informacją o pliku i linii.

  • Bloki try...catch: Przechwytują błędy wykonania, pozwalając na ich obsługę lub wyświetlenie dodatkowych informacji.

    try {
      // Kod, który może spowodować błąd
      let result = riskyOperation();
    } catch (error) {
      // Obsługa błędu
      console.error("Wystąpił błąd:", error.message);
      // Można wysłać błąd na serwer
      sendErrorToServer(error);
    }
    
  • window.onerror: Globalny obsługiwacz dla nieobsłużonych błędów JavaScript. Pozwala na centralne przechwytywanie błędów, które "przeszły" obok try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Globalny błąd:", message, source, lineno, colno);
      // Wysyłanie informacji o błędzie na serwer
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Zwraca true, aby wyciszyć domyślny komunikat o błędzie w konsoli
    };
    
  • Zdarzenie unhandledrejection dla Promises: Przechwytuje nieobsłużone błędy w obietnicach.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Nieobsłużone odrzucenie Promise:', event.reason);
      // Wysyłanie informacji o błędzie na serwer
      sendErrorToServer(event.reason);
    });
    
  • Systemy monitorowania błędów (Sentry, Bugsnag, Rollbar): Profesjonalne serwisy zbierające, agregujące i analizujące błędy w czasie rzeczywistym. Dostarczają stacktrace, informacje o środowisku użytkownika, częstotliwość błędów i powiadomienia. Są głównym narzędziem w produkcji.

  • Logowanie na serwerze: Błędy przechwycone na froncie za pomocą try...catch, onerror lub unhandledrejection są wysyłane do serwera w celu centralnego przechowywania i analizy.

Wybór metody zależy od etapu rozwoju i krytyczności błędu. W produkcji zawsze używam kombinacji try...catch, globalnych obsługiwaczy i systemów monitorowania.