web-dev-qa-db-fra.com

Visual Studio: Comment interrompre les exceptions gérées?

Je souhaite que Visual Studio s’interrompe lorsqu’une exception gérée se produit (c’est-à-dire que je ne veux pas seulement voir un message "Première chance", je veux déboguer l’exception réelle).

par exemple. Je veux que le débogueur se casse à 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 ceux-ci notes pour Visual Studio.NET:

1) Dans VS.NET, allez au menu Débogage >> "Exceptions ..." >> "Exceptions du langage d'exécution commun" >> "Système" et sélectionnez "System.NullReferenceException".

2) Au bas de cette boîte de dialogue, il y a une zone de groupe "Lorsque l'exception est levée:", sélectionnez "Interrompre le débogueur".

3) Exécutez votre scénario. Lorsque l'exception est levée, le débogueur s'arrête et vous avertit avec une boîte de dialogue disant quelque chose comme: "Une exception de type" System.NullReferenceException "a été levée. [Pause] [Continuer]"

Hit [pause]. Cela vous mettra sur la ligne de code à l'origine du problème.

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

Est-ce que quelqu'un sait où se trouve la boîte de dialogue de recherche d'options dans Visual Studio indiquant que la zone de groupe " Lorsque l'exception est levée", avec l'option " Interrompre le débogueur = "?

Mise à jour: le problème était que mon menu Debug ne comportait pas d'élément Exceptions . J'ai personnalisé le menu pour l'ajouter manuellement.

152
Ian Boyd

Avec une solution ouverte, accédez à la rubrique Debug - Exceptions (Ctrl+D,E) option de menu. À partir de là, vous pouvez choisir d'interrompre les exceptions levées ou non gérées par l'utilisateur.

EDIT: Mon instance est configurée avec le "profil" C #. Peut-être que ce n'est pas le cas pour d'autres profils?

161
Austin Salonen

Il y a une fenêtre "exceptions" dans VS2005 ... essayez Ctrl+Alt+E lors du débogage et cochez la case "Lancé" pour l'exception sur laquelle vous souhaitez vous arrêter.

41
Rob Walker

Il m'a fallu un certain temps pour trouver le nouvel emplacement pour les paramètres d'expection, donc une nouvelle réponse.

Depuis Visual Studio 2015 , vous contrôlez les exceptions à arrêter dans la fenêtre Paramètres d'exception (Debug-> Windows-> Paramètres d'exception). Le raccourci est toujours Ctrl-Alt-E.

Le moyen le plus simple de gérer les exceptions personnalisées consiste à sélectionner "Toutes les exceptions ne figurant pas dans cette liste".

Voici une capture d'écran de la version anglaise:

enter image description here

Voici une capture d'écran de la version allemande:

enter image description here

19
Beginner

À partir de Visual Studio 2015, vous devez accéder à la boîte de dialogue "Paramètres d'exception" (Ctrl+Alt+E) et cochez la case "Common Language Runtime Exceptions" (ou une exception que vous voulez, par exemple, ArgumentNullException) pour la faire basculer traitée exceptions.

Étape 1 Step 1 Étape 2 Step 2

10
Sameer

Vérifiez Gestion des exceptions avec le débogueur page, il explique comment le configurer.

En gros, voici les étapes (lors du débogage):

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

  2. Dans la boîte de dialogue Exceptions, sélectionnez Émis pour toute une catégorie d'exceptions, par exemple Exceptions du langage commun.

    -ou-

    Développez le nœud pour une catégorie d'exceptions, par exemple, Exceptions du langage commun, et sélectionnez Émis pour une exception spécifique dans cette catégorie.

7
Guy Starbuck

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

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

Je trouve que cela me donne un peu plus de flexibilité en termes de test car il y a encore des exceptions pour lesquelles je ne veux pas que le IDE s'interrompt.

1
Spencer Ruport

La documentation en ligne semble un peu incertaine, alors je viens de faire un petit test. Le fait de choisir d'interrompre l'exécution de programme à partir de la boîte de dialogue Exceptions provoque l'interruption de l'exécution du programme avec une exception toute, gérée ou non gérée. Si vous souhaitez uniquement interrompre les exceptions gérées, il semble que votre seul recours consiste à consulter votre code et à placer des points d'arrêt sur toutes vos exceptions gérées. Cela semble un peu excessif, il peut donc être préférable d’ajouter une instruction de débogage chaque fois que vous gérez une exception. Ensuite, lorsque vous voyez cette sortie, vous pouvez définir un point d'arrêt sur cette ligne dans le code.

0
markysdad