2009-03-01 27 views
0
function testFun() { 
    onerror = function() { log("caught the error"); return true; }; 
    setTimeout(function() { throw "bad bad bad"; }, 300); 
}; 

Ceci est un exemple, du code, mais cela indique un problème. Si j'exécute ceci dans FF, ou IE7, il imprime le message sensible "attrapé l'erreur" (supposer une fonction raisonnable de "notation").Gestion des erreurs avec VS2008

Toutefois, si je débogue le code dans VS2008, le débogueur s'arrête sur le lancer avec le message suivant: 'Erreur d'exécution Microsoft JScript: Exception levée et non interceptée'. Si je dis "continuer" ou "ignorer", le message de journal n'est pas produit.

Ceci est un problème car le vrai code avec lequel je travaille est beaucoup plus grand que celui-ci, et je veux occasionnellement, vous le savez, déboguer des choses. Donc, deux questions:

  1. Tout savoir pourquoi et puis-je modifier ce comportement avec un indicateur que je ne connais pas? Est-ce que je fais ce que je pense que je fais (en réglant le gestionnaire global 'onerror') dans ce code? Si non, quel est le modèle approprié pour attraper ce type d'erreur?

Remarque: Il n'y a pas de différence avec ce problème si j'utilise window.onerror à la place.

Répondre

2

Selon this définir une fonction globale onerror ne fonctionne pas dans IE. Ils parlaient probablement de IE6 ou plus tôt, alors peut-être MS l'a-t-il corrigé pour IE7 - mais je ne m'attendrais pas à ce que cela débouche automatiquement sur le débogueur VS. Quoi qu'il en soit, essayez d'utiliser window.onerror = function plutôt que seulement onerror.

Si cela ne fonctionne pas, vous devrez utiliser un bloc try/catch à l'intérieur de votre fonction de temporisateur, je suppose. PS: Obtenez firefox et utilisez firebug. le débogueur (et tout le reste) est beaucoup mieux et plus agréable à utiliser que le débogage VS