Je voudrais que Visual Studio s'arrête 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 s'arrête à 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, allez dans le menu Déboguer >> "Exceptions ..." >> "Exceptions Common Language Runtime" >> "Système" et sélectionnez "System.NullReferenceException"
2) Dans le bas de cette boîte de dialogue, il y a une zone de groupe "Lorsque l'exception est levée:", sélectionnez "Entrer dans 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 qui dit quelque chose comme: "Une exception de type" System.NullReferenceException "a été levée. [Break] [Continue]"
Appuyez sur [Pause]. Cela vous mettra sur la ligne de code qui cause le problème.
Mais ils ne s'appliquent pas à Visual Studio 2005 (il n'y a pas d' option d' exceptions dans le menu Déboguer ).
Quelqu'un sait-il où trouver cette boîte de dialogue d'options dans Visual Studio que la zone de groupe « Lorsque l'exception est levée », avec l'option « Entrer dans le débogueur »?
Mise à jour: le problème était que mon menu Déboguer ne contenait pas d' élément d' exceptions . J'ai personnalisé le menu pour l'ajouter manuellement.
la source
Réponses:
Avec une solution ouverte, accédez à l' option de menu Déboguer - Exceptions ( Ctrl+ D, E). À 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 n'est-il pas là pour d'autres profils?
la source
Common Language Runtime Exceptions
><All Common Language Runtime Exceptions not in this list>
sous Visual Studio 2017 et tous mes rêves les plus fous sont devenus réalité.Il y a une fenêtre 'exceptions' dans VS2005 ... essayez Ctrl+ Alt+ Elors du débogage et cliquez sur la case à cocher 'Thrown' pour l'exception sur laquelle vous voulez vous arrêter.
la source
Il m'a fallu un certain temps pour trouver le nouvel endroit pour les paramètres d'attente, donc une nouvelle réponse.
Depuis Visual Studio 2015, vous contrôlez les exceptions sur lesquelles s'arrêter dans la fenêtre Paramètres d'exception (Débogage-> 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:
Voici une capture d'écran de la version allemande:
la source
À partir de Visual Studio 2015 et au-delà, vous devez accéder à la boîte de dialogue "Paramètres d'exception" ( Ctrl+ Alt+ E) et cocher les "Exceptions Common Language Runtime" (ou une spécifique que vous souhaitez, par exemple
ArgumentNullException
) pour le faire casser sur les exceptions gérées .Étape 1 Étape 2
la source
Vérifiez la gestion des exceptions avec la page Débogueur , il explique comment configurer cela.
Essentiellement, voici les étapes (pendant le débogage):
Dans le menu Déboguer, cliquez sur Exceptions.
Dans la boîte de dialogue Exceptions, sélectionnez Levée pour une catégorie entière d'exceptions, par exemple, Exceptions Common Language Runtime.
-ou-
Développez le nœud pour une catégorie d'exceptions, par exemple, Exceptions Common Language Runtime, et sélectionnez Levée pour une exception spécifique dans cette catégorie.
la source
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 try catch en fonction de ce que vous essayez de déboguer et utilisez la structure suivante:
Je trouve que cela me donne un peu plus de flexibilité en termes de test car il y a encore des exceptions sur lesquelles je ne veux pas que l'EDI s'interrompe.
la source
catch(){/*handle or not*/ throw; } // throw without any exception specified will rethrow original exception with original callstack etc
La documentation en ligne semble un peu floue, je viens donc de faire un petit test. Le fait de choisir d'interrompre sur Levé à partir de la boîte de dialogue Exceptions provoque l'arrêt de l'exécution du programme sur toute exception, gérée ou non. Si vous souhaitez interrompre uniquement les exceptions gérées, il semble que votre seul recours soit de parcourir votre code et de mettre 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 à cette ligne dans le code.
la source