構文
newrelic.noticeError(error object $error, [object $customAttributes])
アプリの動作を停止させることなく、ブラウザのエラーを特定します。
要件
Browser Pro または Pro+SPA エージェント
- カスタム属性引数にはエージェント v1118 以降が必要です
newrelic.noticeError()
エージェント v499 以降が必要ですNREUM.noticeError()
エージェント v411 以降が必要です
npm を使用してブラウザ エージェントをインストールしている場合は、
BrowserAgent
クラスをインスタンス化するときにjserrors
機能を有効にする必要があります。features
配列に以下を追加します。import { JSErrors } from '@newrelic/browser-agent/features/jserrors';const options = {info: { ... },loader_config: { ... },init: { ... },features: [JSErrors]}詳細については、 npm ブラウザのインストールに関するドキュメントを参照してください。
説明
このコールは、アプリの処理済みエラーやその他の雑多なエラーを通知または記録するために使用します。これは、エラーをキャッチして処理したものの、アプリの動作を中断させることなくエラーを特定したい場合に便利です。
また、API を使用すると、スクリプトの初期化中やインライン イベント ハンドラーで発生するエラーなど、詳細なしで報告されるエラーを確認することもできます。 エラーは、New Relic が通常検出する他のエラーとともにErrorsページに表示されます。 これらはJavaScriptError
イベントとしても記録されます。 例えば:
var err = new Error('Report caught error to New Relic');newrelic.noticeError(err);
注: 1 回のリクエストで 1000 を超えるJavaScriptError
イベントが送信された場合、1000 個の個別のイベントのみが記録されます。ただし、イベントの総数は内部的に保持され、 EXTRAPOLATE
クエリ句を使用してアクセスできます。
パラメーター
パラメータ | 説明 |
---|---|
エラーオブジェクト | 必須。 browserのErrors ページでデータを分析するときに使用できる意味のあるエラーメッセージを提供します。 |
| オプション。カスタム属性を表す名前と値のペアを含むオブジェクト。 |
例
ノンクリティカルエラー
この例は、 newrelic.noticeError
API を使用して、アプリケーションを中断させたくないキャッチされたエラーを報告する方法を示しています。これは、重大ではないエラーがユーザー エクスペリエンスに影響を及ぼさないものの、開発者に報告したい場合に役立ちます。コード例では、JSON が正しくない場合にデフォルトのfoo
オブジェクトを安全に使用しています。
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);
オプションのエラー付きコールバック
この例では、Node.js によって普及し、Browserify 開発で一般的なエラーおよび応答パターンのコールバックを使用するときに、エラーを New Relic に報告する方法を示します。alert(body);
を独自の関連メッセージに置き換えることができます。
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);});
Promise-based APIの例
プロミスは、非同期のインタラクションを処理するための単一のパターンを提供し、非同期のエラーを簡単に処理することができます。しかし、これによりエラーを完全に無視することも容易になり、開発者には見えないところでアプリケーションが壊れたままになってしまいます。この例では、これらの非同期エラーをNew Relicに報告し、見過ごされないようにしています。
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);});
カスタム属性の取得例
try { // code that throws an error} catch (err) { newrelic.noticeError(err, { attribute1: 'value1', attribute2: 2 });}
ブラウザの制限(Apple SafariとMicrosoft Internet Explorerのみ)
エラーがキャッチされて再スローされた場合、スタックトレースは発生しません。 このような場合、newrelic.noticeError
APIですべてのbrowserタイプのスタックトレースをレポートするには、catch
ステートメントでAPIに渡す必要があります。
try { throw errorObject;} catch (err) { newrelic.noticeError(err); throw err; // loses stack trace!}