12
votes

Erreurs de journal avec trace de pile en JavaScript

J'essaie de connecter des erreurs JavaScript sur un site productif. Jusqu'à présent, cela fonctionnait assez bien avec le code suivant inclus dans le site:

function catcherr(errorMessage, url, line) {
    try { alert(1); i.dont.exist += 0; alert(4);} catch(e) { alert(5);}
    alert(2);
    var parameters = "msg=" + escape(errorMessage)
    // ...
}


0 commentaires

3 Réponses :


1
votes

La plus probable jQuery enveloppe le rappel dans son propre essai / attraper et ignorer l'erreur.


1 commentaires

Je ne pense pas que l'erreur soit lancée si je supprimais l'essai {} dans la fonction rattraper ().



8
votes

Je ne sais pas pourquoi vous avez ce problème (ça a l'air très bizarre et je ne pense pas que c'est un problème avec JQuery mangeant vos exceptions, comme votre alerte (1) n'aurait pas été licenciée), mais je voulais Pour mentionner votre utilisation de Error.Stack - lorsque l'événement Onerror est appelé, vous n'avez pas le contexte de la pile de l'erreur d'origine, alors obtenez une trace de pile à ce point (en attrapant votre propre erreur) ne cédera pas une pile significative.

mais retour à une réponse réelle - au lieu de simuler un problème en écrivant spécifiquement du code brisé afin que vous puissiez attraper l'erreur, que diriez-vous de lancer directement une erreur? La première ligne de votre gestionnaire d'onerror pourrait être: xxx

Ceci est un code valide qui ne vous causera probablement pas de problèmes.


0 commentaires

0
votes

Essayez une exception différente à l'intérieur de l'essai / prise. comme A = 1/0 ou Baddarr [5] = 'Bad' et voyez si ces exceptions déclenchent. Parfois, les erreurs "objet non trouvées" peuvent être à la suite d'objets non chargés et il pourrait y avoir une manipulation différente pour celles que d'autres exceptions.


1 commentaires

Pas sûr alors. très mystifiant. Avez-vous examiné la manipulation des exceptions dans les fichiers JQuery?