構文
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)}