Kako pratiš i nadgledaš greške u JavaScript-u?
sobes.tech АИ
Одговор од АИ
Greške u JavaScript-u pratim i nadgledam sledećim metodama:
-
Konzola pregledača: Glavni alat za otklanjanje grešaka tokom razvoja. Poruke o greškama (syntetičke, logičke, runtime) se prikazuju sa navedenom datotekom i redom.
-
try...catchblokovi: Hvataju greške tokom izvršavanja, omogućavaju njihovo obrađivanje ili prikaz dodatnih informacija.try { // Kod koji može izazvati grešku let result = riskyOperation(); } catch (error) { // Obrada greške console.error("Došlo je do greške:", error.message); // Može se poslati greška na server sendErrorToServer(error); } -
window.onerror: Globalni handler za neobrađene JavaScript greške. Omogućava centralizovano hvatanje grešaka koje "prođu" poredtry...catch.window.onerror = function(message, source, lineno, colno, error) { console.error("Globalna greška:", message, source, lineno, colno); // Slanje informacija o grešci na server sendErrorToServer({ message: message, source: source, lineno: lineno, colno: colno, stack: error ? error.stack : 'N/A' }); return true; // Vraća true da bi se suppress-ovalo standardno prikazivanje greške u konzoli }; -
Događaj
unhandledrejectionza Promises: Hvata neobrađene greške u promisima.window.addEventListener('unhandledrejection', function(event) { console.error('Neobrađeno odbacivanje Promise-a:', event.reason); // Slanje informacija o grešci na server sendErrorToServer(event.reason); }); -
Sistemi za nadgledanje grešaka (Sentry, Bugsnag, Rollbar): Profesionalne usluge koje prikupljaju, agregiraju i analiziraju greške u realnom vremenu. Obuhvataju staktrejse, informacije o okruženju korisnika, učestalost grešaka i obaveštenja. Glavni su alat u produkciji.
-
Logovanje na serveru: Greške koje se hvataju na frontendu pomoću
try...catch,onerroriliunhandledrejection, šalju se na server radi centralnog čuvanja i analize.
Izbor metode zavisi od faze razvoja i kritičnosti greške. U produkciji uvek koristim kombinaciju try...catch, globalnih handlera i sistema za nadgledanje.