重要
この API を使用するには、ブラウザ エージェントの Browser Pro または Pro+SPA エディションが必要です。
構文
newrelic.noticeError(error object $error, [object $customAttributes])
アプリの動作を停止させることなく、ブラウザのエラーを特定します。
要件
カスタム属性の引数には、エージェントのバージョン nr-1118 以上が必要です。
newrelic.noticeError()
エージェント バージョンnr-499以降が必要です。
NREUM.noticeError()
エージェント バージョンnr-411以降が必要です。
説明
このコールは、アプリの処理済みエラーやその他の雑多なエラーを通知または記録するために使用します。これは、エラーをキャッチして処理したものの、アプリの動作を中断させることなくエラーを特定したい場合に便利です。
API を使用して、スクリプトの初期化中やインライン イベント ハンドラーで発生したエラーなど、詳細なしで報告されるエラーに気付くこともできます。エラーは、New Relic が通常検出するその他のエラーとともに、 JavaScript エラーページに表示されます。また、 JavaScriptError
イベントとして記録されます。例えば:
var err = new Error('Report caught error to New Relic');newrelic.noticeError(err);
注: 1 回のリクエストで 1000 を超えるJavaScriptError
イベントが送信された場合、1000 個の個別のイベントのみが記録されます。ただし、イベントの総数は内部的に保持され、 EXTRAPOLATE
クエリ句を使用してアクセスできます。
パラメーター
パラメータ | 説明 |
---|---|
エラーオブジェクト | 必須です。ブラウザの JavaScript のエラー ページ のデータを分析する際に使用できる、意味のあるエラーメッセージを提供してください。 |
| オプションです。カスタム属性を表す名前と値のペアを含むオブジェクトです。 |
例
ノンクリティカルエラー
この例は、 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 がすべてのブラウザ タイプでスタック トレースを報告するようにするには、エラーを API に渡す前に、エラーを手動でスローしてキャッチする必要があります。
try { throw errorObject;} catch (err) { newrelic.noticeError(err);}