Sobes.tech
Middle

Jak sleduješ a monitoruješ chyby v JavaScriptu?

sobes.tech AI

Odpověď od AI

Chyby v JavaScript sleduji a monitoruji následujícími způsoby:

  • Konzole prohlížeče: Hlavní nástroj pro ladění ve fázi vývoje. Chybové zprávy (syntetické, logické, runtime) jsou zobrazovány s uvedením souboru a řádku.

  • Bloky try...catch: Zachycují chyby při běhu, umožňují je zpracovat nebo zobrazit další informace.

    try {
      // Kód, který může způsobit chybu
      let result = riskyOperation();
    } catch (error) {
      // Zpracování chyby
      console.error("Došlo k chybě:", error.message);
      // Můžete odeslat chybu na server
      sendErrorToServer(error);
    }
    
  • window.onerror: Globální obslužník pro neodchycené chyby JavaScriptu. Umožňuje centrálně zachytit chyby, které "unikly" try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Globální chyba:", message, source, lineno, colno);
      // Odeslání informací o chybě na server
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Vrací true, aby potlačil výchozí zobrazení chyby v konzoli
    };
    
  • Událost unhandledrejection pro Promises: Zachytává neodchycené chyby v promisech.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Nezachycené zamítnutí Promise:', event.reason);
      // Odeslání informací o chybě na server
      sendErrorToServer(event.reason);
    });
    
  • Systémy sledování chyb (Sentry, Bugsnag, Rollbar): Profesionální služby, které sbírají, agregují a analyzují chyby v reálném čase. Poskytují stacktrace, informace o prostředí uživatele, frekvenci chyb a upozornění. Jsou hlavním nástrojem v produkci.

  • Logování na serveru: Chyby zachycené na frontendu pomocí try...catch, onerror nebo unhandledrejection jsou odesílány na server pro centralizované ukládání a analýzu.

Volba metody závisí na fázi vývoje a kritičnosti chyby. V produkci vždy používám kombinaci try...catch, globálních handlerů a sledovacích systémů.