Sobes.tech
Middle

Cum urmărești și monitorizezi erorile în JavaScript?

sobes.tech AI

Răspuns de la AI

Erorile în JavaScript le urmăresc și le monitorizez în următoarele moduri:

  • Consola browser-ului: Instrumentul principal pentru depanare în etapa de dezvoltare. Mesajele de eroare (sintetice, logice, runtime) sunt afișate indicând fișierul și linia.

  • Blocurile try...catch: Capturează erorile de execuție, permițându-le să fie gestionate sau afișate informații suplimentare.

    try {
      // Cod care poate cauza o eroare
      let result = riskyOperation();
    } catch (error) {
      // Gestionarea erorii
      console.error("A apărut o eroare:", error.message);
      // Se poate trimite eroarea către server
      sendErrorToServer(error);
    }
    
  • window.onerror: Handler global pentru erorile JavaScript nepreluate. Permite interceptarea erorilor "scăpate" de try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Eroare globală:", message, source, lineno, colno);
      // Trimiterea informațiilor despre eroare către server
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Returnează true pentru a suprima afișarea standard a erorii în consolă
    };
    
  • Evenimentul unhandledrejection pentru Promises: Capturează erorile nepreluate în promisiuni.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Refuz nepreluat al Promise:', event.reason);
      // Trimiterea informațiilor despre eroare către server
      sendErrorToServer(event.reason);
    });
    
  • Sisteme de monitorizare a erorilor (Sentry, Bugsnag, Rollbar): Servicii profesionale care colectează, agregă și analizează erorile în timp real. Oferă traceback-uri, informații despre mediul utilizatorului, frecvența erorilor și notificări. Sunt instrumentul principal în producție.

  • Logare pe server: Erorile capturate pe frontend cu try...catch, onerror sau unhandledrejection sunt trimise pe server pentru stocare și analiză centralizată.

Alegerea metodei depinde de etapa de dezvoltare și de gravitatea erorii. În producție, folosesc întotdeauna o combinație de try...catch, handleri globali și sisteme de monitorizare.