Sobes.tech
Middle

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 a try...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 unhandledrejection per 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, onerror o unhandledrejection vengono 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.