Отчёты об ошибках

Как работают отчёты об ошибках, что отправляется на вкладку 'Errors' и как сообщать об ошибках и исключениях вручную

Отчёты об ошибках

Отчёты об ошибках очень важны для мониторинга стабильности вашего приложения, заблаговременного обнаружения регрессий и понимания того, какие проблемы возникают у ваших пользователей чаще всего. По умолчанию любое неперехваченное исключение регистрируется на вкладке ‘Errors’:

Errors Tab

Кроме того, зарегистрированные ошибки также будут отображаться в записи сессии на вкладке ‘Console’ в DevTools:

Exceptions Tab

Ручная регистрация исключений

Section titled Ручная регистрация исключений

Трекер OpenReplay поддерживает регистрацию трёх типов ошибок:

Обо всех перечисленных выше типах можно сообщить с помощью одного метода:

tracker.handleError(error, metaObject); // metaObject is optional and is a flat object

Рассмотрим пример для каждого типа ошибок:

Перехваченные исключения (Error)

Section titled Перехваченные исключения (Error)

По умолчанию перехваченные исключения не регистрируются на вкладке ‘Console’. Чтобы сообщить об ошибке, мы можем поступить следующим образом:

try {
    // application code
}
catch(err) {
    // application code that handles the error
    tracker.handleError(error, metaObject); // metaObject is optional and is a flat object
}

Отклонённые промисы (PromiseRejectionEvent)

Section titled Отклонённые промисы (PromiseRejectionEvent)

Если промис отклонён, и мы хотим сообщить об ошибке в OpenReplay, мы можем поступить следующим образом:

function myFunc() {
    doSomeAsyncStuff()
    .then((result) => {
        // application code
    })
    .catch(promiseRejectionErr => {
        // application code to handle the error
        tracker.handleError(promiseRejectionErr, metaObject); // metaObject is optional and is a flat object     
    })
}

В этом примере показано, как сообщить об ошибке в случае, если элемент <img> не загрузился:

<img id="myImg" src="image.gif">
<p id="demo"></p>
document.getElementById("myImg").addEventListener("error", myFunction);

function myFunction(errorEvent) {
  document.getElementById("demo").innerHTML = "The image could not be loaded.";
  tracker.handleError(errorEvent, { context: "demo" });
}

Если у вас есть какие-либо вопросы об этом процессе, не стесняйтесь обращаться к нам в нашем Slack или загляните на наш Форум.