JavaScript-Stack-Traces für benutzerdefinierte Ausnahmen abrufen
Beim Ausführen Ihres JavaScript-Codes können Ausnahmen wertvolle Einblicke in Probleme liefern, auf die Ihr Skript stößt. Es stellt jedoch eine Herausforderung dar, Stack-Traces für Ausnahmen zu erhalten, die Sie selbst auslösen. Dieser Artikel befasst sich mit diesem Problem und bietet Lösungen zum Abrufen von Stack-Traces speziell für Ihre eigenen Ausnahmen.
Anfangs war es nur möglich, Stack-Traces für integrierte JavaScript-Ausnahmen abzurufen. Fortschritte in modernen Browsern haben jedoch neue Techniken eingeführt, um diese Einschränkung zu beheben.
Console.trace() für moderne Browser
In neueren Browsern ist console.trace( )-Methode ist verfügbar. Indem Sie es aufrufen, können Sie einen Stack-Trace erhalten, der den Speicherort des console.trace()-Aufrufs enthält.
<code class="javascript">console.trace();</code>
Error Stack Property for All Browsers
Eine verfeinerte Lösung, die von Kommentatoren zur ursprünglichen Frage geteilt wird, besteht darin, die Stack-Eigenschaft eines Error-Objekts zu verwenden.
<code class="javascript">function stackTrace() { var err = new Error(); return err.stack; }</code>
Dieser Ansatz bietet einen detaillierten Stack-Trace, der der von console.trace() generierten Ausgabe ähnelt:
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
Benutzerdefinierte Stack-Trace-Funktion
In älteren Browsern, die diese Methoden nicht unterstützen, kann eine komplexere Funktion verwendet werden, um einen benutzerdefinierten Stack-Trace zu erhalten:
<code class="javascript">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); }</code>
Das obige ist der detaillierte Inhalt vonWie rufe ich Stack-Traces für benutzerdefinierte JavaScript-Ausnahmen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!