2009-02-04 7 views
2

Im jouer avec TryParse()Obtenir errorInfo retour de TryParse()

Mais laisse dire l'analyse syntaxique échoue, retourne faux, et ... rien .. Y at-il un moyen d'obtenir des informations sur ce retour échoué l'analyse?

J'ai vu quelque chose comme ça à codeproject, mais je ne l'ai pas vraiment compris.

Merci :)

+0

Comment envisagez-vous d'utiliser cette information ... si elle était disponible? – Gishu

+0

Je devine dire à l'utilisateur ce qui s'est mal passé, et ce qu'il ou elle doit réparer avant de passer à autre chose. Je sais qu'il serait probablement suffisant de dire à l'utilisateur que l'email n'était pas valide, alors il ou elle serait probablement capable de voir ce qui est faux .. – Moulde

Répondre

5

Non, il n'y a aucun moyen d'obtenir ces informations des routines .NET normales. Vous pouvez vérifier manuellement quelques éléments:

  • Essayez d'analyser le nombre en tant que nombre décimal. Si cela fonctionne, mais l'analyse en entier ne l'est pas, alors c'est soit hors de la plage de l'entier, soit ce n'est pas un entier.
  • Rechercher les non-décimale, non +/-, les caractères non-virgule décimale
  • Vérifiez que ce soit une chaîne vide

Vous avez pas dit ce que vous essayez d'analyser (entier, double etc) ou quelles options vous voulez (autoriser hex, séparateurs de milliers etc), ce qui rend plus difficile de donner une bonne liste de choses à vérifier.

+0

Focus n'est pas réglé sur quelque chose de particulier, donc votre réponse est plutôt bonne :) Merci – Moulde

2

La méthode TryParse() est là quand vous voulez être à l'abri des exceptions.

Si vous souhaitez voir les exceptions, pourquoi ne pas utiliser la méthode Parse() standard dans un bloc try/catch qui vous permettra d'afficher toutes les exceptions FormatExceptions etc? Comme prévu, avec la gestion des exceptions, cela pourrait avoir un impact sur les performances, mais si l'on s'attend à ce que Parse() réussisse, cela devrait être tolérable.

1

Pourquoi ne pas simplement utiliser la méthode Parse régulière à la place?

Questions connexes