web-dev-qa-db-fra.com

window.onerror ne fonctionne pas dans chrome

J'essaie d'ajouter un événement onerror à mon site Web.

window.onerror = function() {
    alert("an error");
}

Mais tout ce que je reçois c'est:

notThere();
ReferenceError: notThere is not defined

Qu'est-ce que je rate?

Navigateur: Chrome 26.0.1410.64 m

Étapes à reproduire:

  • ajoutez le code à la console.
  • ajoutez notThere () à la console
39
Dinkheller

Le window.onerror fonctionne dans Chrome (voir jsfiddle - http://jsfiddle.net/PWSDF/ ), mais apparemment pas dans la console - ce qui est logique.

35
Lachezar

window.onerror n'est pas déclenché lorsque la console génère directement une erreur. Il peut être déclenché via setTimeout cependant, par exemple, setTimeout(function() { notThere(); }, 0);

Duplicata possible: Chrome: une erreur de code sera-t-elle invoquée depuis le déclencheur de la console de développement window.onerror?

50
wrschneider

Autres raisons pour lesquelles vous ne pourrez peut-être pas gérer les erreurs dans window.onerror (à l'exception de ceux mentionnés):

  • Une autre bibliothèque définit window.onerror Après Vous.
  • Si vous utilisez Angular, les erreurs ne passeront pas par window.onerror. Vous devez les gérer en utilisant cette usine:

        .factory('$exceptionHandler', function() {
            return function errorCatcherHandler(exception, cause) {
                console.error(exception);
                if (window.OnClientError) window.OnClientError(exception);
            };
        })
    

Voir:

https://docs.angularjs.org/api/ng/service/ $ exceptionHandler

http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html

25
NoOne