Obtendo um conjunto de exceções lançadas
Embora o JavaScript permita que exceções sejam levantadas, obter um rastreamento de pilha para uma exceção personalizada pode ser um desafio . Este artigo explora vários métodos para recuperar rastreamentos de pilha especificamente para exceções definidas pelo usuário.
A propriedade stack de um objeto Error fornece uma solução simples. Ao criar um novo objeto Error e acessar sua propriedade stack, você pode capturar um rastreamento:
function stackTrace() {
var err = new Error();
return err.stack;
}
Esta abordagem gera um rastreamento de pilha semelhante a:
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
Este formato fornece a função de chamada, URL e funções de chamada sucessivas.
Para navegadores modernos, um método mais direto está disponível:
console.trace(); // (MDN Reference)
Esta função captura um rastreamento de pilha e o exibe no console.
Uma opção alternativa foi proposta no tópico original:
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);
}
Essa função percorre recursivamente a pilha de chamadas e constrói uma string de rastreamento de pilha.
Ao implementar esses métodos, os desenvolvedores podem obter rastreamentos de pilha de forma eficaz para exceções JavaScript personalizadas, permitindo tratamento de erros e depuração mais robustos .
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3