Obtenir une trace d'exceptions levées
Bien que JavaScript permette de déclencher des exceptions, obtenir une trace de pile pour une exception personnalisée peut être difficile . Cet article explore différentes méthodes pour récupérer les traces de pile spécifiquement pour les exceptions définies par l'utilisateur.
La propriété stack d'un objet Error fournit une solution simple. En créant un nouvel objet Error et en accédant à sa propriété de pile, vous pouvez capturer une trace :
function stackTrace() {
var err = new Error();
return err.stack;
}
Cette approche génère une trace de pile similaire à :
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
Ce format fournit la fonction d'appel, l'URL et les fonctions d'appel successives.
Pour les navigateurs modernes, une méthode plus simple est disponible :
console.trace(); // (MDN Reference)
Cette fonction capture une trace de pile et l'affiche dans la console.
Une option alternative a été proposée dans le fil de discussion d'origine :
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);
}
Cette fonction parcourt de manière récursive la pile d'appels et construit une chaîne de trace de pile.
En implémentant ces méthodes, les développeurs peuvent obtenir efficacement des traces de pile pour les exceptions JavaScript personnalisées, permettant une gestion des erreurs et un débogage plus robustes. .
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3