2011-07-15 3 views
4

Dans mon application de formulaire Windows 3.5 SP1 les lignes suivantes échouent toutes les deux avec une exception de format.double.Parse échoue sur NaN

Double.Parse(double.NaN.ToString(CultureInfo.InvariantCulture),CultureInfo.InvariantCulture); 

Double.Parse(double.NaN.ToString()); 

Que pourrait-il se passer ici?

Mise à jour:

Le format exception se produit uniquement lorsque lorsque vous démarrez l'application à partir de Visual Studio (2010) et ont le Common Language Runtime Exception notificaion (Debug-> Exceptions ...) activé .

+0

Que signifient double.NaN.ToString() et double.NaN.ToString (CultureInfo.InvariantCulture) évaluer à? "NaN"? –

+1

Etant donné qu'il casse toutes les exceptions, même celles qui sont gérées, je suppose que vous devez simplement "Continuer" la session de débogage et voir le résultat. – leppie

Répondre

5

Je pense que l'exception est levée (et interceptée) dans le .NET Framework lui-même. Si vous exécutez le programme en dehors de Visual Studio, vous ne devriez pas remarquer de problèmes.

Je peux reproduire cela, mais si je coche 'Activer juste mon code (géré seulement)' dans les options de débogage pour Visual Studio, je ne vois plus l'exception.

1

Cela fonctionne très bien pour moi, sans exception levée. Si ce que vous dites est vrai (cela n'arrive que lorsque la notificaion Common Language Runtime Exception est activée), alors il s'agit d'une exception interne qui est levée puis interceptée et gérée dans le framework .Net, et donc pas quelque chose que vous devriez être inquiet pour.

Notez que lorsque l'exception se produit, la ligne est surlignée en vert (pas en orange) pour indiquer qu'il s'agit simplement d'une notification d'une exception survenant plutôt que l'arrêt du débogueur sur une exception non gérée.

Exception

+1

@bitbonk Quand vous dites qu'il "casse" votre code, le débogueur va s'arrêter sur cette ligne de code, cependant si vous appuyez sur continuer/F10/quoi que ce soit, la ligne de code continuera à s'exécuter parfaitement bien. La ligne est surlignée en vert au lieu d'orange pour l'indiquer. – Justin

Questions connexes