208 votes

Visual Studio: Comment briser sur les exceptions traitées?

Je voudrais Visual Studio pour rompre lorsqu'une exception gérée se produit (c'est à dire je ne veux pas voir une "Première chance" message, je tiens à déboguer l'exception).

par exemple, je veux le débogueur de casser à l'exception:

try
{
   System.IO.File.Delete(someFilename);
}
catch (Exception)
{
   //we really don't care at runtime if the file couldn't be deleted
}

Je suis tombé sur ces notes pour Visual Studio.NET:

1) Dans VS.NET aller dans le Menu Debug >> "Exceptions..." >> "Langue Commune Des Exceptions d'exécution" >> "Système" et sélectionnez "Système.NullReferenceException"

2) En bas de cette boîte de dialogue, il est un "Quand l'exception est levée:" zone de groupe, sélectionnez "Pause" dans le débogueur"

3) Exécutez votre scénario. Lorsque l' exception est levée, le débogueur arrêter et de vous prévenir à l'aide d'une boîte de dialogue dit quelque chose comme: "Une exception de type "Système.NullReferenceException" a été levée. [Pause] [Continuer]"

Appuyer Sur [Pause]. Cela va vous mettre sur la ligne de code à l'origine de la problème.

Mais ils ne s'appliquent pas à Visual Studio 2005 (il n'y a pas d' Exceptions option sur le Debug menu).

Personne ne sait où la trouver cette boîte de dialogue options de Visual Studio que "Lorsque l'exception est levée" zone de groupe, avec l'option "Saut dans le débogueur"?

Mise à jour: Le problème était que mon Debug menu n'avais pas d' Exceptions élément. Je l'ai adapté le menu pour l'ajouter manuellement.

200voto

Austin Salonen Points 28057

Avec une solution ouverte, aller à la Debug - Exceptions (Ctrl+D,E) option de menu. De là, vous pouvez choisir de rompre sur la Levée ou de l'Utilisateur-les exceptions non gérées.

EDIT: Mon exemple est mis en place avec le C# "profil" peut-être qu'il n'est pas là pour d'autres profils?

63voto

Rob Walker Points 25840

Il y a un "exceptions" de la fenêtre dans VS2005 ... essayez d'appuyer sur Ctrl-Alt-E lors du débogage et cliquez sur 'Jeté' case à cocher pour l'exception que vous voulez arrêter.

10voto

Guy Starbuck Points 14241

Check this out sur msdn, il explique comment mettre en place cela.

En substance, voici les étapes à suivre (en cours de débogage):

  1. Dans le menu Déboguer, cliquez sur Exceptions.

  2. Dans la boîte de dialogue Exceptions, sélectionnez Jeté pour toute une catégorie d'exceptions, par exemple, le Common Language Runtime Exceptions.

    -ou-

    Développez le nœud pour une catégorie d'exceptions, par exemple, le Common Language Runtime Exceptions, et sélectionnez Levée d'une exception spécifique à l'intérieur de cette catégorie.

2voto

Spencer Ruport Points 24589

Une technique que j'utilise est quelque chose comme ce qui suit. Définir une variable globale que vous pouvez utiliser pour un ou plusieurs blocs try catch en fonction de ce que vous essayez de déboguer et d'utiliser la structure suivante:

if(!GlobalTestingBool)
{
   try
   {
      SomeErrorProneMethod();
   }
   catch (...)
   {
      // ... Error handling ...
   }
}
else
{
   SomeErrorProneMethod();
}

J'ai trouver ce qui me donne un peu plus de souplesse en termes de tests, car il y a toujours quelques exceptions, je ne veux pas l'IDE de pause.

0voto

liang Points 154

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X