Обзор
globalErrorIntegration слушает события окна error и unhandledrejection и сообщает о каждом через captureException(). Она включена по умолчанию (вместе с SessionIntegration) — каждое необработанное исключение и каждый промис, отклонение которого никто не ждал, попадает в Инциденты без дополнительного кода.
Такие ошибки помечаются handled: no, и сессия с ними считается упавшей (см. Сессии); ошибки, о которых вы сообщаете сами через captureException(), делают её только сессией с ошибкой.
Отклонение, причина которого не Error (например, Promise.reject('nope')), оборачивается в Error, так что у него всё равно есть имя, сообщение и стек.
Использование
Ничего делать не нужно — init() регистрирует её автоматически. Чтобы выключить:
ts
import { disable } from '@buglapse/browser'
disable('global-error')Чтобы заменить своей реализацией, передайте интеграцию с именем 'global-error' в init({ integrations }) — см. Своя интеграция.
Ошибки внутри колбэков setTimeout, requestAnimationFrame или обработчиков событий тоже ловятся здесь, но браузеры урезают их до Script error., если скрипт с другого домена и без CORS, и такая ошибка пропускается — сообщать не о чем. BrowserApiErrorsIntegration сохраняет исходную ошибку в месте её возникновения; с ней эта интеграция сообщает об исходной ошибке.