Sobes.tech
Middle

Как следиш и наблюдаваш грешките в 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, глобални обработчици и системи за мониторинг.