取得自訂異常的JavaScript 堆疊追蹤
在執行JavaScript 程式碼時,異常可以為您的腳本遇到的問題提供有價值的見解。然而,獲取自己拋出的異常的堆疊追蹤是一個挑戰。本文解決了這個問題,並提供了專門針對您自己的異常獲取堆疊追蹤的解決方案。
最初,只能取得內建 JavaScript 異常的堆疊追蹤。然而,現代瀏覽器的進步引入了新技術來解決此限制。
現代瀏覽器的Console.trace()
在最近的瀏覽器中,console.trace( )方法可用。透過呼叫它,您可以獲得包含 console.trace() 呼叫位置的堆疊追蹤。
console.trace();
Error Stack Property對於所有瀏覽器
評論者在原始問題上分享的一個改進的解決方案涉及利用錯誤的堆疊屬性物件。
function stackTrace() {
var err = new Error();
return err.stack;
}
此方法提供了類似於console.trace() 產生的輸出的詳細堆疊追蹤:
DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44 DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9 .success@http://localhost:49573/:462 x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6 .send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
自訂堆疊追蹤函數
在不支援這些方法的舊版瀏覽器中,可以使用更複雜的函數來獲取自訂堆疊追蹤:
function stacktrace() {
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) '(' f.arguments.join(',') ')']);
}
return st2(arguments.callee.caller);
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3