Erhalten eines Strace ausgelöster Ausnahmen
Während JavaScript das Auslösen von Ausnahmen ermöglicht, kann das Erhalten eines Stack-Trace für eine benutzerdefinierte Ausnahme eine Herausforderung sein . In diesem Artikel werden verschiedene Methoden zum Abrufen von Stack-Traces speziell für benutzerdefinierte Ausnahmen untersucht.
Die Stack-Eigenschaft eines Error-Objekts bietet eine einfache Lösung. Indem Sie ein neues Error-Objekt erstellen und auf dessen Stack-Eigenschaft zugreifen, können Sie einen Trace erfassen:
function stackTrace() {
var err = new Error();
return err.stack;
}
Dieser Ansatz generiert einen Stack-Trace ähnlich wie:
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
Dieses Format stellt die aufrufende Funktion, die URL und aufeinanderfolgende aufrufende Funktionen bereit.
Für moderne Browser ist eine einfachere Methode verfügbar:
console.trace(); // (MDN Reference)
Diese Funktion erfasst einen Stack-Trace und zeigt ihn in der Konsole an.
Eine alternative Option wurde im ursprünglichen Thread vorgeschlagen:
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);
}
Diese Funktion durchläuft rekursiv den Aufrufstapel und erstellt eine Stack-Trace-Zeichenfolge.
Durch die Implementierung dieser Methoden können Entwickler effektiv Stack-Traces für benutzerdefinierte JavaScript-Ausnahmen abrufen und so eine robustere Fehlerbehandlung und Fehlerbehebung ermöglichen .
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3