Sentry-javascript: ¿Es necesario aplicar parches integrados en *todos* los navegadores?

Creado en 27 abr. 2017  ·  3Comentarios  ·  Fuente: getsentry/sentry-javascript

Leer la introducción en https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror.html y mirar el código fuente de raven es realmente necesario para polillenar el onerror by monkey parcheando cada incorporado con try/catch para recuperar el seguimiento de la pila, incluso si el navegador dado (por ejemplo, chrome/FF) proporciona el objeto de error?

Me parece que obliga al navegador a realizar un trabajo innecesario si no es necesario. ¿O Raven está haciendo algo más que justifica esto?

Editar: probablemente no, ya que no parece que lo estés haciendo por el nodo de cuervo.

Todos 3 comentarios

Por lo menos, no se trata completamente de "necesitamos el objeto de error". En algunos casos, los errores que están disponibles simplemente no se pueden usar, y esto incluye navegadores modernos como Firefox. Por ejemplo, es posible que no incluyan la pila completa o que falten detalles (como números de columna).

Un gran asterisco aquí porque no estoy seguro de que esto sea totalmente cierto todavía hoy, pero no fue hace tanto tiempo.

tl; dr, ¿cuál es el daño en garantizar un comportamiento predecible, y luego fingir que los navegadores no cambian/tienen peculiaridades?

Esto es necesario en gran medida para garantizar que el mismo error dé como resultado exactamente los mismos seguimientos de pila en diferentes navegadores, de modo que podamos agrupar con precisión varias ocurrencias del mismo problema en diferentes navegadores. Esto también se relaciona con la forma en que obtenemos algo más que un "Error de secuencia de comandos" cuando las secuencias de comandos de origen cruzado arrojan errores (consulte la publicación de blog de Ben sobre eso ) y recopilamos algunas de nuestras migas de pan automáticas de esta instrumentación.

Aparte de eso, el posible "trabajo innecesario" que describe es extremadamente mínimo, la característica que detecta el comportamiento window.onerror es difícil de hacer limpiamente, y preferimos no intentar mantener una matriz actualizada de qué navegador las versiones hacen lo que hacen con window.onerror cuando podemos simplemente normalizar en todos los navegadores.

Debo agregar que sin try/catch, no podemos generar un "rastreo sintético" en los casos en que se arroja un objeto que no es un error (por ejemplo throw "error" ). El rastro sintético le permite ver desde dónde se arrojó el objeto defectuoso, lo que puede ser crucial para rastrear errores.

¿Fue útil esta página
0 / 5 - 0 calificaciones