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 dietry...catchontglippen 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,onerrorofunhandledrejection, 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.