Estou tentando encontrar ou descobrir uma maneira de exibir em uma caixa de alerta todas as exceções de javascript não tratadas em um aplicativo. Eu gostaria que tudo isso fosse feito no lado do cliente, sem usar nenhum código do lado do servidor. Estou usando MVC3 como ambiente.
Tenho pesquisado nos últimos dias e não encontrei exatamente o que procuro.
Encontrei 2 maneiras abaixo que parecem ser quase o que estou procurando, exceto que essas maneiras são configuradas para que você tenha que passar um nome de função em um método personalizado para imprimir o rastreamento de pilha de todas as exceções não tratadas dentro daquele função específica. Estou procurando uma maneira de não ter que passar manualmente um nome de função para um método personalizado que imprime o rastreamento de pilha de todas as exceções não tratadas. Eu gostaria que esse método personalizado apenas 'escutasse' todas as exceções não tratadas em todo o aplicativo.
http://eriwen.com/javascript/js-stack-trace/
Também algo semelhante ao link anterior:
https://github.com/eriwen/javascript-stacktrace
Este é o código básico do segundo link acima que imprime o rastreamento de pilha de uma função javascript especificada:
instrumentFunction: function (context, functionName, callback) {
context = context || window;
var original = context[functionName];
context[functionName] = function instrumented() {
callback.call(this, printStackTrace().slice(4));
return context[functionName]._instrumented.apply(this, arguments);
};
context[functionName]._instrumented = original;
}
function printStackTrace(options) {
options = options || {
guess: true
};
var ex = options.e || null,
guess = !! options.guess;
var p = new printStackTrace.implementation(),
result = p.run(ex);
return (guess) ? p.guessAnonymousFunctions(result) : result;
}
Então, para resumir, todos vocês sabem de alguma maneira de ter algum tipo de 'ouvinte' para ouvir todas as exceções não tratadas de javascript e depois imprimi-las na tela em uma caixa de alerta?
Obrigado! Jason
fonte
Respostas:
Você pode fazer isso usando o método window.onerror.
fonte
Você pode usar
window.onerror
ou (surpreendentemente!) Vincular ao evento 'erro' corretamente:Se quiser rastrear erros de JavaScript, experimente o Atatus . Eu trabalho na Atatus.
fonte
Além de
Você também pode capturar todos os erros disparados dentro de um callback de promessa (
.then()
) ouvindo ounhandledrejection
eventofonte
window.onerror
ewindow.addEventListener("error"
, ou usar um deles é suficiente?window.addEventListener("error"
, envieuseCapture
set para atrue
fim de capturar também erros de elementos que não apareceram. developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…error
evento não estava pegando meu erro particular.unhandledrejection
entendi embora.throw new Error('tja');
não é pego no último cromo com esta abordagem ...Confira http://log4javascript.org ele é baseado no Log4J. Se a maior parte do seu código for empacotado em instruções try / catch para lidar com exceções, você pode usar esta biblioteca como uma interface comum para enviar saída para uma "caixa de diálogo" sempre disponível ou janela de registro que seu usuário final pode ver. Você poderia até ter um botão que executa um window.print () para imprimir o conteúdo da caixa de diálogo na impressora ou PDF. Boa sorte.
fonte