Error.stackTraceLimit
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
注意:此功能是当前非标准的 V8 堆栈跟踪 API 的一部分。但是,出于兼容性原因,JavaScriptCore 也实现了此功能。
Error.stackTraceLimit
静态数据属性指示堆栈跟踪捕获的最大堆栈帧数。用户代码可以设置它来更改引擎的行为。
通常,读取此属性没有太大用处,但您可以设置它为一个新值。将其设置为更大的值可能有助于调试,因为它允许您查看更多的调用堆栈。将其设置为更小的值可以提高性能,因为它减少了捕获的堆栈量。
值
一个整数,表示堆栈跟踪捕获的最大堆栈帧数。
Error.stackTraceLimit 的属性特性 | |
---|---|
可写 | 是 |
可枚举 | 是 |
可配置 | 是 |
描述
由于 stackTraceLimit
是 Error
的静态属性,因此您始终将其用作 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
规范
此特性似乎未在任何规范中定义。浏览器兼容性
加载中…