Sentry-javascript: Нужно ли исправлять встроенные программы в *каждом* браузере?

Созданный на 27 апр. 2017  ·  3Комментарии  ·  Источник: getsentry/sentry-javascript

Чтение вступления на https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror.html и просмотр исходного кода ворона действительно необходимо для полифилла onerror с помощью обезьяны исправляет каждый встроенный с помощью try/catch, чтобы получить трассировку стека, даже если данный браузер (например, chrome/FF) предоставляет объект ошибки?

Мне кажется, что браузер вынужден выполнять ненужную работу, если в этом нет необходимости. Или Рейвен делает что-то еще, что оправдывает это?

Редактировать: вероятно, нет, поскольку вы, похоже, не делаете это для узла ворона.

Все 3 Комментарий

По крайней мере, это не совсем «нам нужен объект ошибки». В некоторых случаях ошибки, которые становятся доступными, просто непригодны для использования, включая современные браузеры, такие как Firefox. Например, они могут не включать полный стек или могут отсутствовать детали (например, номера столбцов).

Большая звездочка здесь в том, что я не уверен, что это все еще верно сегодня, но не так давно.

Вкратце, какой вред в обеспечении предсказуемого поведения, а затем притворяться, что браузеры не меняются/имеют причуды

Это необходимо в основном для того, чтобы одна и та же ошибка приводила к одинаковым трассировкам стека в разных браузерах, чтобы мы могли точно сгруппировать несколько случаев одной и той же проблемы вместе в разных браузерах. Это также относится к тому, как мы получаем больше, чем просто «Ошибка сценария», когда сценарии с разными источниками выдают ошибки (см . запись в блоге Бена об этом ), и мы собираем некоторые из наших автоматических хлебных крошек из этого инструментария.

Помимо всего этого, потенциальная «ненужная работа», которую вы описываете, чрезвычайно минимальна, функцию, определяющую поведение window.onerror , сложно сделать аккуратно, и мы бы не хотели поддерживать актуальную матрицу того, какой браузер версии делают то, что с window.onerror , когда мы можем вместо этого просто нормализовать во всех браузерах.

Я должен добавить, что без try/catch мы не можем генерировать «синтетическую трассировку» в случаях, когда выбрасывается объект, не являющийся ошибкой (например, throw "error" ). Синтетическая трассировка позволяет увидеть, откуда был выброшен плохой объект, что может иметь решающее значение при отслеживании ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги