6 votes

Comment puis-je obtenir une trace de la pile JS sans arrêter le script ?

Si vous throw en JavaScript, l'erreur générée se propage généralement jusqu'à l'interface de l'utilisateur. window.onerror qui peut arrêter l'exécution ultérieure d'un script.

Existe-t-il un moyen d'obtenir une trace de la pile à l'intérieur d'une fonction sans provoquer cet arrêt de l'exécution ?

13voto

Tuti Points 131

Vous pouvez également créer une nouvelle erreur sans la lancer et utiliser la trace de la pile.

function doSomething() {
    ...
    const stackTrace = new Error().stack
    ...
}

3voto

3stacks Points 841

Le fait de lancer une erreur arrêtera la pile, sauf si elle est rattrapée par un try/catch.

function getStack() {
    try {
        throw new Error();
    } catch(e) {
        return e.stack;
    }
}

L'appel de getStack à partir de n'importe quelle fonction imprimera la pile à partir de là.

Notez que les noms de méthode dans la pile ne sont pas affectés par les cartes de source, donc si vous avez affaire à du code minifié, vous pouvez encore obtenir des noms obfusqués.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X