Heim  >  Artikel  >  Web-Frontend  >  Wie rufe ich Stack-Traces für benutzerdefinierte JavaScript-Ausnahmen ab?

Wie rufe ich Stack-Traces für benutzerdefinierte JavaScript-Ausnahmen ab?

Linda Hamilton
Linda HamiltonOriginal
2024-10-17 22:28:29141Durchsuche

How to Retrieve Stack Traces for Custom JavaScript Exceptions?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn