Sentry-javascript: é necessário corrigir os built-ins em *todos* os navegadores?

Criado em 27 abr. 2017  ·  3Comentários  ·  Fonte: getsentry/sentry-javascript

Lendo a introdução em https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror.html e olhando o código fonte do raven, é realmente necessário polyfill o onerror por monkey remendando cada built-in com try/catch para recuperar o rastreamento de pilha, mesmo se o navegador fornecido (por exemplo, chrome/FF) fornecer o objeto de erro?

Para mim, parece forçar o navegador a fazer um trabalho desnecessário se não for necessário. Ou o corvo está fazendo outra coisa que justifique isso?

Edit: provavelmente não, já que você não parece estar fazendo isso para o raven-node.

Todos 3 comentários

No mínimo, não é inteiramente sobre "precisamos do objeto de erro". Em alguns casos, os erros disponibilizados simplesmente não são utilizáveis, e isso inclui navegadores modernos como o Firefox. Por exemplo, eles podem não incluir a pilha completa ou podem estar faltando detalhes (como números de coluna).

Um grande asterisco aqui, pois não tenho certeza de que isso seja verdade ainda hoje, mas não foi há muito tempo.

tl; dr qual é o mal em garantir um comportamento previsível, então fingir que os navegadores não mudam/têm peculiaridades

Isso é necessário em grande parte para garantir que o mesmo erro resulte exatamente nos mesmos rastreamentos de pilha em diferentes navegadores, para que possamos agrupar com precisão várias ocorrências do mesmo problema em diferentes navegadores. Isso também está relacionado a como obtemos mais do que apenas "Erro de script" quando scripts de origem cruzada lançam erros (consulte a postagem do blog de Ben sobre isso ) e coletamos algumas de nossas migalhas automáticas dessa instrumentação.

Tudo isso de lado, o potencial "trabalho desnecessário" que você descreve é ​​extremamente mínimo, detectar o comportamento window.onerror é difícil de fazer de forma limpa, e preferimos não tentar manter uma matriz atualizada de qual navegador versões fazem o que com window.onerror quando podemos apenas normalizar em todos os navegadores.

Devo acrescentar que, sem try/catch, não podemos gerar um "traço sintético" nos casos em que um objeto sem erro é lançado (por exemplo throw "error" ). O rastreamento sintético permite que você veja de onde o objeto ruim foi lançado, o que pode ser crucial para rastrear bugs.

Esta página foi útil?
0 / 5 - 0 avaliações