Visual Studio 2017 est (un peu soudainement) en panne sur les {toutes} exceptions. Cela signifie que si je les désactive dans les paramètres des exceptions (en appuyant sur CTRL + ALT + E pendant le débogage), le débogueur s’interrompt toujours. Je ne sais pas s'il s'agit simplement d'un bogue de VS que je ne peux pas modifier et que je dois donc vivre avec, ou s'il existe une solution simple pour le résoudre.
Voici la fenêtre de configuration des exceptions:
et cela l'exception VS rompt sur:
A propos, j’ai aussi essayé ce beau moins (rien ne se passe si je le presse) ou en ajoutant une condition impossible (VS a tout de même éclaté à l’exception).
J'ai également testé d'autres exceptions (en les lançant simplement), que j'avais désactivées auparavant, et elles ont également été lancées. J'ai également testé le même problème dans d'autres projets, où il apparaît également:
En fait, je mets même le tout dans une déclaration catch catch mais VS rompt toujours:
InitializeComponent ();
try
{
var t = new Thread (() =>
{
while (!IsHandleCreated) {} //It breaks here (similiar to the screenshots)
while (true)
Invoke (new Action (() => Size = new Size ()));
});
while (true)
{
t.Start ();
Thread.Sleep (100);
t.Abort ();
}
}
catch (ThreadAbortException) { }
Il n'apparaît pas dans les autres IDE (comme Rider) sur mon PC et ne se produit pas sur d'autres ordinateurs sous VS. Cela ne se produisait pas toujours sur mon PC, cela a juste commencé récemment et uniquement en mode débogage. Et si je continue l'exécution (avec F5), cela continue normalement.
EDIT Lorsque je mettais la capture d'essai à l'intérieur du fil, il se comportait un peu différemment (je suis désolé d'avoir placé des images ici, mais je pense qu'elles sont plus expressives dans ce cas):
Est-ce que n'importe qui peut expliquer ce comportement?
EDIT Il semble normal que ThreadAbortExceptions
rompt à nouveau à la fin d'une instruction catch. Cependant, VS ne devrait toujours pas interrompre du tout cette exception.
J'avais un problème similaire.
Je l'ai corrigé en décochant "Pause lorsque des exceptions traversent des limites AppDomain ou gérées/natives" dans Outils> Options> Débogage> Général
Je sais que c'est un peu tard pour cela, mais ThreadAbortException est différent de toutes les autres exceptions et nécessite un traitement spécial, sinon il est automatiquement renvoyé à la fin de tous les blocs catch si vous ne le gérez pas comme prévu. a être traité.
Je ne peux pas confirmer si cela se produit avec d'autres types de projets, mais cela m'arrive toujours avec VSTP (Visual Studio Tools pour Python).
Bien que ce soit moins que satisfaisant, il peut au moins faire taire les exceptions et vous permettre de continuer à travailler en paix jusqu'à ce qu'une meilleure solution apparaisse. Dans mon cas, il était presque impossible de déboguer mon code car StopIteration se cassait à chaque itération.
Sélectionnez Débogage> Windows> Paramètre d'exception s ou appuyez sur Ctrl-Alt-E. Y
Cliquez avec le bouton droit n'importe où sur la fenêtre et sélectionnez Afficher les colonnes> Actions supplémentaires. Une colonne "Actions supplémentaires" apparaîtra si ce n'est déjà fait.
Cliquez avec le bouton droit de la souris sur une exception que vous souhaitez supprimer ou cochez la case située en haut de l'écran pour sélectionner une catégorie entière d'exceptions, à savoir Exceptions Python. Cliquez sur Continuer si non géré dans le code utilisateur.
Répétez cette procédure pour chaque exception ou catégorie d'exceptions supplémentaire.