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

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

Ручная регистрация исключений
Section titled Ручная регистрация исключенийТрекер OpenReplay поддерживает регистрацию трёх типов ошибок:
- Перехваченные исключения - Error
- Отклонённые промисы - PromiseRejectionEvent
- События ошибок (onError) - ErrorEvent
Обо всех перечисленных выше типах можно сообщить с помощью одного метода:
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
})
}
onError (ErrorEvent)
Section titled onError (ErrorEvent)В этом примере показано, как сообщить об ошибке в случае, если элемент <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" });
}
Есть вопросы?
Section titled Есть вопросы?Если у вас есть какие-либо вопросы об этом процессе, не стесняйтесь обращаться к нам в нашем Slack или загляните на наш Форум.