Question

Je cherche à consigner les exceptions javascript non gérées. Existe-t-il un événement qui se déclenche lorsqu'une exception n'est pas interceptée? Je cherche à intercepter les exceptions avant qu'elles ne provoquent des erreurs javascript dans le navigateur, mais je préférerais ne pas exécuter toute mon application dans un try / catch. Toute aide serait appréciée. Merci!

Mise à jour: tvanfosson a signalé l’erreur en tant que possibilité. Il ne fait pas partie d'une spécification et n'est disponible que dans les navigateurs basés sur IE ou Gecko.

Pour plus d'informations, http://books.google.com/books?id=tKszhx-XkzYC&pg=PA386&lpg=PA386&dq=safari+onerror+javascript&source=web&ots=gQaPhpUnjG& iBCtOQs0aH_EAzSbWlGa9v5flyo # PPA387, M1

Table de support OnError - http://www.quirksmode.org/dom/events/ error.html

Documentation de Mozilla - https://developer.mozilla.org/en/DOM/window .onerror

Rapport de bogue WebKit - https://bugs.webkit.org/show_bug.cgi? id = 8519

Était-ce utile?

La solution

Essayez d’utiliser un gestionnaire onerror. Docs de MDN. Cela vous permettra de faire quelque chose lorsqu'une erreur est détectée, mais ne vous laissera probablement pas continuer d'une manière gracieuse comme le ferait un bloc try / catch. Sachez qu’il existe sans aucun doute des différences entre les navigateurs dans la manière dont cela est géré.

Autres conseils

Découvrez ce violon:

http://jsfiddle.net/xYsRA/1/

window.onerror = function (msg, url, line) {
    console.log("Caught[via window.onerror]: '" + msg + "' from " + url + ":" + line);
    return true; // same as preventDefault
};

window.addEventListener('error', function (evt) {
    console.log("Caught[via 'error' event]:  '" + evt.message + "' from " + evt.filename + ":" + evt.lineno);
    console.log(evt); // has srcElement / target / etc
    evt.preventDefault();
});


throw new Error("Hewwo world.  I crash you!!!");

throw new Error("Hewwo world.  I can only crash you once... :(");

Quelles impressions:

Caught[via window.onerror]: 'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:21
Caught[via 'error' event]:  'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:26
ErrorEvent {lineno: 32, filename: "http://fiddle.jshell.net/xYsRA/1/show/", message: "Uncaught Error: Hewwo world.  I crash you!!!", clipboardData: undefined, cancelBubble: false…}
 fiddle.jshell.net:27\

Notes:

  • Si vous supprimez le " return true " / "evt.preventDefault ()" Après l’enregistrement de l’erreur, elle s’imprimera normalement sur la console JS.

  • Contrairement aux déclarations ci-dessus, window.onerror fonctionnait dans tous les navigateurs que j'avais testés. Cependant, la méthode addEventListener est probablement meilleure de toute façon et fournit une sémantique plus riche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top