Я пишу программу в C#, и я хочу поймать исключения, вызванные путем преобразования "" (пустой указатель) в интервал. Каково имя исключения?
Править: Я не уверен, что могу показать здесь полный код... Но я уверен, что Вам не нужен полный код, таким образом:
int num1 = Int32.Parse(number1.Text);
int num2 = Int32.Parse(number2.Text);
Если вы можете этого избежать, не создавайте код по исключениям!
Имя искомого исключения называется FormatException
.
Однако было бы разумнее сначала выполнить TryParse
на объекте, который вы пытаетесь проанализировать, например
int value;
if(!int.TryParse("1", out value))
{
// You caught it without throwing an exception.
}
Вы получите FormatException, если разбор не удался. Почему бы вместо этого не использовать int.TryParse?
В качестве побочного примечания, простой способ узнать исключение - запустить его. Когда вы столкнетесь с ошибкой, она выдаст вам имя исключения.
Давайте посмотрим на документацию (что является гораздо более чистым решением, чем "пробовать"):
public static int Parse(string s)
[...]
Исключения:
ArgumentNullException
: s is null.FormatException
: s имеет неправильный формат.
Это должно ответить на ваш вопрос. Как уже говорили другие, возможно, вы задаете неправильный вопрос и хотите использовать Int32.TryParse вместо этого.
Когда возникает исключение, вы можете увидеть его тип. Разумнее всего обработать этот случай и, если возможно, отобразить изящное сообщение для вашего пользователя.
Исключения стоят дорого. Вы должны использовать int.TryParse. Он вернет булево значение false, если преобразование не удалось.
Convert.ToInt32 не генерирует исключение формата («входная строка имеет неправильный формат») для пустой строки. Вы можете использовать это, если допустимо, чтобы результат был 0 для нулевой строки. (по-прежнему рвет на пустую строку)
string s = null;
int i = Convert.ToInt32(s);
Но если вы ожидаете, что в поле будет число, вам следует либо использовать TryParse (как предлагалось), либо какой-либо валидатор, чтобы сообщить пользователю, что ему нужно ввести число .
Зависит от того, что вы используете для преобразования. Например, int.Parse
вызовет ArgumentNullException
, FormatException
или OverflowException
. Скорее всего, вы ищете ArgumentNullException
, но если это пустая строка, а не пустая ссылка, это, вероятно, будет FormatException
Вы, вероятно, хотите получить System.InvalidCastException
, хотя я думаю, что это будет зависеть от того, как вы попытаетесь выполнить преобразование.
Тем не менее, не будет ли проще / быстрее просто написать код и попробовать его самостоятельно? В частности, вы не указали , как вы будете выполнять преобразование.
Просто попробуйте. Этот код:
int.Parse("");
Выбрасывает исключение FormatException.