Sobes.tech
Middle

Ako sleduješ a monitoruješ chyby v JavaScript?

sobes.tech AI

Odpoveď od AI

Chyby v JavaScripte sledujem a monitorujem nasledujúcimi spôsobmi:

  • Konzola prehliadača: Hlavný nástroj na ladenie počas vývoja. Správy o chybách (syntetické, logické, runtime) sa zobrazujú s uvedením súboru a riadku.

  • try...catch bloky: Zachytávajú chyby počas vykonávania, umožňujú ich spracovanie alebo zobrazenie ďalších informácií.

    try {
      // Kód, ktorý môže spôsobiť chybu
      let result = riskyOperation();
    } catch (error) {
      // Spracovanie chyby
      console.error("Vyskytla sa chyba:", error.message);
      // Môže sa odoslať chyba na server
      sendErrorToServer(error);
    }
    
  • window.onerror: Globálny handler pre neopracované chyby JavaScriptu. Umožňuje centralizované zachytávanie chýb, ktoré "prešli" mimo try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Globálna chyba:", message, source, lineno, colno);
      // Odoslanie informácií o chybe na server
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Vráti true, aby potlačilo štandardné zobrazenie chyby v konzole
    };
    
  • Udalosť unhandledrejection pre Promises: Zachytáva neopracované chyby v sľuboch.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Neopracované zamietnutie Promise:', event.reason);
      // Odoslanie informácií o chybe na server
      sendErrorToServer(event.reason);
    });
    
  • Systémy monitorovania chýb (Sentry, Bugsnag, Rollbar): Profesionálne služby, ktoré zbierajú, agregujú a analyzujú chyby v reálnom čase. Poskytujú stacktrace, informácie o prostredí používateľa, frekvenciu chýb a upozornenia. Sú hlavným nástrojom v produkcii.

  • Logovanie na serveri: Chyby zachytené na frontende pomocou try...catch, onerror alebo unhandledrejection sa odosielajú na server na centralizované uloženie a analýzu.

Výber metódy závisí od fázy vývoja a kritickosti chyby. V produkcii vždy používam kombináciu try...catch, globálnych handlerov a systémov monitorovania.