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);
}
// Only two frames in supporting engines; all frames in others

规范

此特性似乎未在任何规范中定义。

浏览器兼容性

另见