Как следиш и наблюдаваш грешките в JavaScript?
sobes.tech AI
Отговор от AI
Грешките в JavaScript ги следя и мониторя по следния начин:
-
Конзолата на браузъра: Основният инструмент за отстраняване на грешки в етапа на разработка. Съобщенията за грешки (синтетични, логически, време на изпълнение) се показват с указание за файла и реда.
-
Блокове
try...catch: Засичат грешки при изпълнение, позволявайки да ги обработите или да покажете допълнителна информация.try { // Код, който може да предизвика грешка let result = riskyOperation(); } catch (error) { // Обработка на грешката console.error("Настъпи грешка:", error.message); // Може да изпратите грешката към сървъра sendErrorToServer(error); } -
window.onerror: Глобален обработчик за неуловени грешки в JavaScript. Позволява централизирано прихващане на грешки, които "са пропуснати" отtry...catch.window.onerror = function(message, source, lineno, colno, error) { console.error("Глобална грешка:", message, source, lineno, colno); // Изпращане на информация за грешката към сървъра sendErrorToServer({ message: message, source: source, lineno: lineno, colno: colno, stack: error ? error.stack : 'N/A' }); return true; // Връща true, за да потисне стандартното показване на грешката в конзолата }; -
Събитие
unhandledrejectionза Promises: Засича неуловени грешки в promises.window.addEventListener('unhandledrejection', function(event) { console.error('Необработено отхвърляне на Promise:', event.reason); // Изпращане на информация за грешката към сървъра sendErrorToServer(event.reason); }); -
Системи за мониторинг на грешки (Sentry, Bugsnag, Rollbar): Професионални услуги, които събират, агрегират и анализират грешки в реално време. Предоставят stacktrace, информация за средата на потребителя, честота на грешките и известия. Те са основният инструмент в продукция.
-
Логване на сървъра: Грешките, уловени на фронтенда чрез
try...catch,onerrorилиunhandledrejection, се изпращат към сървъра за централизирано съхранение и анализ.
Изборът на метод зависи от етапа на разработка и критичността на грешката. В продукция винаги използвам комбинация от try...catch, глобални обработчици и системи за мониторинг.