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
規範
此特性似乎未在任何規範中定義。瀏覽器相容性
載入中…