2009-02-04 2 views
2

Im играя с TryParse()Получение errorInfo назад от TryParse()

Но позволяет сказать, что синтаксический не удается, то возвращает ложь, и ... ничего .. Есть ли способ, чтобы получить информацию о том, что назад не удалось разобрать?

Я видел что-то подобное в codeproject, но я этого не понимал.

Спасибо :)

+0

Как вы планируете использовать эту информацию .. если она была доступна? – Gishu

+0

Я предполагаю сказать пользователю, что пошло не так, и то, что он или она должен исправить, прежде чем двигаться дальше. Я знаю, что, вероятно, было бы достаточно, чтобы сообщить пользователю, что письмо недействительно, тогда он или она, вероятно, сможем увидеть, что случилось. – Moulde

ответ

5

Нет, нет никакого способа получения этой информации от обычных .NET процедур. Вы можете проверить несколько вещей вручную:

  • Попробуйте разобрать число как десятичное. Если это работает, но синтаксический анализ как целое не имеет значения, то он либо выходит за пределы целого числа, либо не является целым числом.
  • Ищут не-десятичной, не являющиеся символы +/-, не десятичной запятой
  • Проверить, является ли это пустая строка

Вы не сказали, что вы пытаетесь разобрать (целое число, double и т. д.) или какие параметры вы хотите (разрешить шестнадцатеричные, разделители тысяч и т. д.), что затрудняет предоставление хорошего списка вещей для проверки.

+0

Фокус не установлен на что-то конкретное, поэтому ваш ответ довольно хорош :) Спасибо – Moulde

2

Метод TryParse() существует, когда вы хотите быть защищены от каких-либо исключений.

Если вы хотите увидеть исключения, то почему бы вам не использовать стандартный метод Parse() в блоке try/catch, который позволит вам просмотреть любые форматированныеException и т. Д.? Как и ожидалось, при обработке исключений это может повлиять на производительность, однако, если ожидается, что Parse() будет успешным, это должно быть приемлемым.

1

Почему бы просто не использовать обычный метод Parse?

Смежные вопросы