このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Error.stackTraceLimit

非標準: この機能は標準化されていません。非標準の機能はブラウザーの対応が限られ、将来的に変更または削除される可能性があるため、本番環境での使用は推奨されません。ただし、標準の選択肢が存在しない特定のケースでは、有効な代替手段となる場合があります。

メモ: この機能は現在標準外の V8 スタックトレース API の一部です。ただし互換性の理由から、JavaScriptCore でも実装されています。

Error.stackTraceLimit は静的データプロパティで、エラーのスタックトレースによってキャプチャされるスタックフレームの最大数を示します。ユーザーコードによって設定可能であり、エンジンの動作を変更できます。

一般的に、このプロパティを読み取ることはあまり有用ではありませんが、新しい値に設定することは可能です。デバッグ時には、より大きな値に設定すると、コールスタックをより多く表示できるため有用です。より小さな値に設定すると、キャプチャされるスタックの量が減少するため、パフォーマンスが向上します。

整数で、エラーのスタックトレースによってキャプチャされるスタックフレームの最大数を表します。

Error.stackTraceLimit のプロパティ属性
書込可能
列挙可能
設定可能

解説

stackTraceLimitError の静的プロパティであるため、常に Error.stackTraceLimit として使用します。作成した Error オブジェクトのプロパティとして使用することはできません。単一のエラーに対してのみスタックトレースをカスタマイズしたい場合は、プロパティを設定し、エラーを作成した後、プロパティを元の値にリセットする必要があるかもしれません。

Error.stackTraceLimit の設定

このコードは、Error.stackTraceLimit に未対応の環境でも安全に実行できます。なぜなら、このプロパティを読み取るのではなく設定のみを行うため、未対応のエンジンでは設定が無視されるからです。

js
Error.stackTraceLimit = 2;
const a = () => b();
const b = () => c();
const c = () => d();
const d = () => e();
const e = () => {
  throw new Error("My error");
};
try {
  a();
} catch (e) {
  console.log(e.stack);
}
// 対応するエンジンではフレームが 2 つだけ。その他のエンジンではすべてのフレーム。

仕様書

This feature does not appear to be defined in any specification.

ブラウザーの互換性

関連情報