Sobes.tech
Middle

Hoe volg en monitor je fouten in JavaScript?

sobes.tech AI

Antwoord van AI

Fouten in JavaScript volg ik en monitor ik op de volgende manieren:

  • Browserconsole: Het belangrijkste hulpmiddel voor debugging tijdens de ontwikkelfase. Foutmeldingen (synthetisch, logisch, runtime) worden weergegeven met vermelding van het bestand en de regel.

  • try...catch-blokken: Vangen runtime-fouten op, waardoor je ze kunt afhandelen of extra informatie kunt tonen.

    try {
      // Code die een fout kan veroorzaken
      let result = riskyOperation();
    } catch (error) {
      // Foutafhandeling
      console.error("Er is een fout opgetreden:", error.message);
      // Fout naar server sturen
      sendErrorToServer(error);
    }
    
  • window.onerror: Globale handler voor onopgevangen JavaScript-fouten. Hiermee kunnen fouten die try...catch ontglippen centraal worden opgevangen.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Globale fout:", message, source, lineno, colno);
      // Informatie over de fout naar de server sturen
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Geeft true terug om de standaard foutweergave in de console te onderdrukken
    };
    
  • unhandledrejection-gebeurtenis voor Promises: Vangt onopgevangen fouten in promises op.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Onbehandelde Promise-rejectie:', event.reason);
      // Foutinformatie naar de server sturen
      sendErrorToServer(event.reason);
    });
    
  • Foutmonitoringsystemen (Sentry, Bugsnag, Rollbar): Professionele diensten die fouten in realtime verzamelen, aggregeren en analyseren. Ze bieden stacktraces, informatie over de gebruikersomgeving, foutfrequentie en meldingen. Ze zijn het belangrijkste instrument in productie.

  • Serverlogboek: Fouten die aan de frontend worden opgevangen via try...catch, onerror of unhandledrejection, worden naar de server gestuurd voor centrale opslag en analyse.

De keuze van de methode hangt af van de ontwikkelingsfase en de ernst van de fout. In productie gebruik ik altijd een combinatie van try...catch, globale handlers en monitoringsystemen.