Come tracci e monitori gli errori in JavaScript?
sobes.tech AI
Risposta dell'AI
Gli errori in JavaScript li monitoro e tengo sotto controllo nei seguenti modi:
-
Console del browser: Strumento principale per il debugging durante la fase di sviluppo. I messaggi di errore (sintetici, logici, runtime) vengono visualizzati indicando il file e la riga.
-
Blocchi
try...catch: Catturano gli errori di esecuzione, permettendo di gestirli o di mostrare informazioni aggiuntive.try { // Codice che può causare un errore let result = riskyOperation(); } catch (error) { // Gestione dell'errore console.error("Si è verificato un errore:", error.message); // È possibile inviare l'errore al server sendErrorToServer(error); } -
window.onerror: Gestore globale per errori non catturati in JavaScript. Permette di intercettare errori che sono passati inosservati atry...catch.window.onerror = function(message, source, lineno, colno, error) { console.error("Errore globale:", message, source, lineno, colno); // Invio delle informazioni sull'errore al server sendErrorToServer({ message: message, source: source, lineno: lineno, colno: colno, stack: error ? error.stack : 'N/A' }); return true; // Restituisce true per sopprimere la visualizzazione standard dell'errore nella console }; -
Evento
unhandledrejectionper Promises: Intercetta errori non gestiti nelle promesse.window.addEventListener('unhandledrejection', function(event) { console.error('Rifiuto di Promise non gestito:', event.reason); // Invio delle informazioni sull'errore al server sendErrorToServer(event.reason); }); -
Sistemi di monitoraggio degli errori (Sentry, Bugsnag, Rollbar): Servizi professionali che raccolgono, aggregano e analizzano gli errori in tempo reale. Forniscono stack trace, informazioni sull'ambiente dell'utente, frequenza degli errori e notifiche. Sono lo strumento principale in produzione.
-
Logging sul server: Gli errori catturati nel frontend tramite
try...catch,onerrorounhandledrejectionvengono inviati al server per l'archiviazione e l'analisi centralizzata.
La scelta del metodo dipende dalla fase di sviluppo e dalla criticità dell'errore. In produzione utilizzo sempre una combinazione di try...catch, gestori globali e sistemi di monitoraggio.