2 votes

Interrompre le lancement d'une exception qui a été attrapée

Dans le débogueur VS, les exceptions non attrapées entraînent l'arrêt du programme au moment où l'exception est levée (ou presque) et dans un état qui vous permet de regarder toutes les trames de la pile et les variables locales jusqu'à ce point.

Existe-t-il un moyen d'obtenir le même résultat (break at throw), mais pour qu'une exception soit attrapée à un moment précis ? Je ne suis pas intéressé à faire cela pour TOUTES les exceptions ou même toutes les exceptions d'un type donné (cela pourrait devenir inutile très rapidement) mais si je pouvais le faire pour un seul bloc try ou catch, je serais content.

un peu en rapport :

5voto

Andy Points 15910

La boîte de dialogue Debug -> Exceptions fait-elle ce que vous voulez ? Vous pouvez sélectionner les exceptions qui provoqueront l'arrêt de VS, qu'elles soient capturées ou non. Je ne connais pas de moyen de faire cela pour une certaine partie du code, mais seulement en fonction du type d'exception.

2voto

jcollum Points 10236

Oui, vous devriez pouvoir placer un point d'arrêt sur la dernière accolade de votre bloc catch. Ou sur la commande de lancer si vous relancez.

Si vous avez juste besoin d'avoir un point d'arrêt sur toute exception à l'intérieur d'une certaine méthode, faites un re-throw.

try {  }
catch (Exception exc)
{ 
   throw;  // <-- breakpoint here
} 

Edit : J'avais l'habitude de mettre des points d'arrêt sur presque toutes mes exceptions. J'ai découvert à la dure que cela ralentissait considérablement le débogueur dès que j'atteignais environ 25 points d'arrêt. Peut être seulement pertinent pour VS2005.

Edit2 : L'emplacement qui a causé l'exception devrait être dans le StackTrace de l'objet exc.

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