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" detry...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
unhandledrejectionpentru 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,onerrorsauunhandledrejectionsunt 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.