Sintaxe
newrelic.noticeError(error object $error, [object $customAttributes])
Identifica um erro do browser sem interromper as operações do seu aplicativo.
Requisitos
Browser Pro ou agente Pro+SPA
- Argumento atributo personalizado requer agente v1118 ou superior
newrelic.noticeError()
requer agente v499 ou superiorNREUM.noticeError()
requer agente v411 ou superior
Se estiver usando o npm para instalar o agente browser, você deverá ativar o recurso
jserrors
ao instanciar a classeBrowserAgent
. Na matrizfeatures
, adicione o seguinte:import { JSErrors } from '@newrelic/browser-agent/features/jserrors';const options = {info: { ... },loader_config: { ... },init: { ... },features: [JSErrors]}Para obter mais informações, consulte a documentação de instalação do browser npm.
Descrição
Use esta chamada para notar ou log erros manipulados ou outros erros diversos do seu aplicativo. Isso é útil quando você detectou e tratou um erro, mas ainda deseja identificá-lo sem interromper a operação do seu aplicativo.
Você também pode usar a API para observar erros que, de outra forma, seriam relatados sem nenhum detalhe, como erros que ocorrem durante a inicialização do script ou em um manipulador de eventos embutido. Os erros aparecerão na páginaErrors junto com outros erros que o New Relic normalmente detecta. Eles também serão registrados como um eventoJavaScriptError
. Por exemplo:
var err = new Error('Report caught error to New Relic');newrelic.noticeError(err);
Nota: Se mais de 1.000 eventos JavaScriptError
forem enviados em uma única solicitação, apenas 1.000 eventos separados serão registrados. No entanto, o número total de eventos é preservado internamente e acessível usando EXTRAPOLATE
cláusula de consulta.
Parâmetro
Parâmetro | Descrição |
---|---|
objeto de erro | Obrigatório. Forneça uma mensagem de erro significativa que você possa usar ao analisar dados na páginaErrors do browser. |
| Opcional. Um objeto contendo pares nome/valor representando atributo personalizado. |
Exemplos
Erros não críticos
Este exemplo mostra como usar a API newrelic.noticeError
para relatar erros detectados que você não deseja que interrompam seu aplicativo. Isso é útil quando erros não críticos não têm impacto na experiência do usuário, mas você ainda deseja relatá-los aos desenvolvedores. O código de exemplo usa com segurança um objeto foo
padrão em caso de JSON inválido.
var foo;try { foo = JSON.parse('{ "bar"');} catch (err) { //Report caught error to New Relic newrelic.noticeError(err);
foo = { bar: 'default value' };}alert(foo.bar);
Retorno de chamada com erro opcional
Este exemplo mostra como relatar um erro ao New Relic ao usar o padrão de erro e resposta retorno de chamada popularizado pelo Node.js e comum no desenvolvimento do Browserify. Você pode substituir alert(body);
pela sua própria mensagem relevante.
var xhr = require('xhr');xhr('http://localhost:8080', function(err, resp, body) { //Report unthrown error to New Relic if (err) return newrelic.noticeError(err); //Handle successful response alert(body);});
Exemplo de API baseada em promessa
As promessas fornecem um padrão único para lidar com a interação assíncrona, facilitando o tratamento de erros assíncronos. No entanto, isso também facilita o erro completamente ignorado, deixando o aplicativo quebrado de maneiras que os desenvolvedores não conseguem ver. Este exemplo reporta esses erros assíncronos ao New Relic para evitar que sejam ignorados.
var rest = require('rest');rest('/').then(function(res) { //Handle successful response alert(res.entity);}, function(err) { //Report unthrown error to New Relic newrelic.noticeError(err);});
Exemplo de captura de atributo personalizado
try { // code that throws an error} catch (err) { newrelic.noticeError(err, { attribute1: 'value1', attribute2: 2 });}
Limitações do browser (somente Apple Safari e Microsoft Internet Explorer)
Se um erro for detectado e relançado, ele não terá um stack trace. Nesses casos, se desejar que a API newrelic.noticeError
relate um stack trace para todos os tipos de navegador, você deverá transmiti-lo à API na instrução catch
.
try {throw errorObject;} catch (err) {newrelic.noticeError(err);throw err; // loses stack trace!}