2009-12-23 6 views
1

Dans une application que je fais, parfois des exceptions qui sont lancées mais non gérées, semblent disparaître dans l'air et provoquer des bugs étranges avec l'interface graphique.Quelque chose engloutit des exceptions non gérées?

Je vais généralement le trouver en faisant un pas en avant jusqu'à atteindre la ligne où l'exception est levée, à quel point Visual Studio arrête immédiatement de marcher et retourne à l'application.

Il s'agit d'une application IRC qui est fortement pilotée par les événements par la connexion par socket asynchrone. Je ne sais pas si c'est pertinent.

Je n'ai aucun bloc catch vide nulle part ou quelque chose comme ça.

Répondre

3

Apparemment, il s'agit d'un bug connu avec les machines x64.

Le bug et une solution de contournement sont sur Microsoft Connect.

Edit:

Si quelqu'un est intéressé par la cause, cela a été affiché lorsque le bogue a été fermé:

Bonjour,

Ce bogue a été fermé comme "externe" parce que ce comportement résulte de comment la version x64 de Windows gère les exceptions. Lorsqu'une exception de mode utilisateur traverse une transition de noyau, les versions x64 de Windows ne permettent pas de propager l'exception. Par conséquent, les débogueurs attachés sont non conscients du fait qu'une exception s'est produite, ce qui a entraîné l'échec du débogueur à rompre l'exception non gérée.

Malheureusement, là où l'équipe Visual Studo ne peut rien faire pour résoudre ce problème, c'est le résultat de la conception du système d'exploitation. Tous les commentaires concernant ce problème doivent être adressés à l'équipe Windows; Toutefois, l'équipe Windows considère qu'il s'agit de la conception de système «correcte» et considère que le comportement x86 est «incorrect».

Cordialement, Débogueur Visual Studio

-1

Toute exception non gérée dans les discussions de fond provoquent l'exécution de mettre fin immédiatement. Vous devez capturer et gérer les exceptions dans vos méthodes asynchrones.

Voir this related question

1

Voici une astuce de débogage pour la recherche de mystérieuses exceptions: dans Visual Studio, accédez à Debug -> Exceptions ... et cochez la case "Jetés" pour les exceptions Common Language Runtime. De cette façon, chaque fois qu'une exception est déclenchée, l'IDE va ​​se casser. J'en ai beaucoup utilisé pour trouver des exceptions qui semblent être avalées.

N'oubliez pas de l'éteindre, cependant. :)

Questions connexes