Error.stackTraceLimit
非標準: この機能は標準化されていません。非標準の機能はブラウザーの対応が限られ、将来的に変更または削除される可能性があるため、本番環境での使用は推奨されません。ただし、標準の選択肢が存在しない特定のケースでは、有効な代替手段となる場合があります。
メモ: この機能は現在標準外の V8 スタックトレース API の一部です。ただし互換性の理由から、JavaScriptCore でも実装されています。
Error.stackTraceLimit
は静的データプロパティで、エラーのスタックトレースによってキャプチャされるスタックフレームの最大数を示します。ユーザーコードによって設定可能であり、エンジンの動作を変更できます。
一般的に、このプロパティを読み取ることはあまり有用ではありませんが、新しい値に設定することは可能です。デバッグ時には、より大きな値に設定すると、コールスタックをより多く表示できるため有用です。より小さな値に設定すると、キャプチャされるスタックの量が減少するため、パフォーマンスが向上します。
値
整数で、エラーのスタックトレースによってキャプチャされるスタックフレームの最大数を表します。
Error.stackTraceLimit のプロパティ属性 | |
---|---|
書込可能 | 可 |
列挙可能 | 可 |
設定可能 | 可 |
解説
stackTraceLimit
は Error
の静的プロパティであるため、常に Error.stackTraceLimit
として使用します。作成した Error
オブジェクトのプロパティとして使用することはできません。単一のエラーに対してのみスタックトレースをカスタマイズしたい場合は、プロパティを設定し、エラーを作成した後、プロパティを元の値にリセットする必要があるかもしれません。
例
>Error.stackTraceLimit の設定
このコードは、Error.stackTraceLimit
に未対応の環境でも安全に実行できます。なぜなら、このプロパティを読み取るのではなく設定のみを行うため、未対応のエンジンでは設定が無視されるからです。
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.>ブラウザーの互換性
Loading…