web-dev-qa-db-fra.com

comment attraper TOUTES les erreurs javascript avec window.onerror? (y compris le dojo)

cette question fait suite à javascript: comment afficher les erreurs de script dans une alerte contextuelle? où il a été expliqué comment corriger les erreurs javascript classiques en utilisant:

<script type="text/javascript">
    window.onerror = function(msg, url, linenumber) {
        alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
        return true;
    }
</script>

J'ai essayé et découvert que les erreurs du dojo sont semblables à celle-ci:

TypeError: this.canvas is undefined         dojo.js (Row 446)

n'ont pas été signalés en utilisant cette méthode, ce qui m'amène à ma question:

Comment signaler les erreurs javascript all à l'aide de window.onerror (notamment les erreurs de dojo)?

27
jaronimoe

La meilleure solution consiste à utiliser try/catch, par exemple.

try{
    if(a=='a'){

    }
}catch(e){
    alert(e);
    //or send to server
    new Image().src='errorReport.php?e='+e;
}

Google Plus semble l'utiliser.

1
dexbol

vous pouvez écrire le code comme ceci:

var goErrHandler=window.onerror;
goErrHandler= function(msg, url, linenumber) {
console.log('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
return true;
}

goErrHandler();

donc, dans la console, vous verrez quelque chose comme ça:

Error message: undefined
URL: undefined 
Line Number: undefined
1
SANJAY PANDYA