Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> некорректно отображаются исключения 
:(
    Опции темы
gypehot19
Дата 8.12.2016, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



Обрабатываю исключения на ввод: чтоб входное значение подходило под тип int (по типу и по значению) и не было равно 0
Третье исключение отображается как положено, а вместо первых двух выдает стандартное исключение, не то, которое я прописала
как быть, может кто подскажет?
Код

try
            {
                Console.WriteLine("здесь ввод");
                string input = Console.ReadLine();
                if (Convert.ToInt32(input) > int.MaxValue || Convert.ToInt32(input) < int.MinValue)
                    throw new Exception("первое исключение");
                if (!Int32.TryParse(input, out numerator))
                    throw new Exception("второе исключение");
                if (Convert.ToInt32(input) == 0)
                    throw new Exception("третье исключение");
            }
            catch (Exception ex)
            {
                numerator = rand.Next(1, 30);
                Console.WriteLine(ex.Message + "\nзаменим на это: " + numerator);
            }

PM MAIL   Вверх
chupachups
Дата 9.12.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



если исключение возникает в 5-ой строке, то абсолютно не важно что написано в 6-ой строке - сразу идет переход в блок catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



если исключение возникает в 5-ой строке, то абсолютно не важно что написано в 6-ой строке - сразу идет переход в блок catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



если исключение возникает в 5-ой строке, то абсолютно не важно что написано в 6-ой строке - сразу идет переход в блок catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



если исключение возникает в 5-ой строке, то абсолютно не важно что написано в 6-ой строке - сразу идет переход в блок catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



если исключение возникает в 5-ой строке, то абсолютно не важно что написано в 6-ой строке - сразу идет переход в блок catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
gypehot19
Дата 9.12.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



а как сделать, чтоб он писал именно то, что происходит в 6 строке?
ибо если исключение возникает в 9 строке, то он сначала пишет то, что в 10, а потом уже переходит к catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
gypehot19
Дата 9.12.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



а как сделать, чтоб он писал именно то, что происходит в 6 строке?
ибо если исключение возникает в 9 строке, то он сначала пишет то, что в 10, а потом уже переходит к catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
gypehot19
Дата 9.12.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



а как сделать, чтоб он писал именно то, что происходит в 6 строке?
ибо если исключение возникает в 9 строке, то он сначала пишет то, что в 10, а потом уже переходит к catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
gypehot19
Дата 9.12.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



а как сделать, чтоб он писал именно то, что происходит в 6 строке?
ибо если исключение возникает в 9 строке, то он сначала пишет то, что в 10, а потом уже переходит к catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
gypehot19
Дата 9.12.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2016

Репутация: нет
Всего: нет



а как сделать, чтоб он писал именно то, что происходит в 6 строке?
ибо если исключение возникает в 9 строке, то он сначала пишет то, что в 10, а потом уже переходит к catch

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



до 10-ой строки доходит лишь потому что было введено число, а не что попало, которое отсеивается исключением в 5-ой строке
по правильному надо сперва использовать Int32.TryParse а уже потом без всяких Convert.ToInt32 (уже ведь пропарсили) сравнивать на допустимость интервалов
но Int32.TryParse не пройдет если ввод выходит за интервал Int32

а если задача стоит только лишь в том, чтобы научиться отлавливать исключения, то нужно просто первое условие заключить в try-catch, типа того:
Код

try
{
    Console.WriteLine("здесь ввод");
    string input = Console.ReadLine();
    try
    {
        if (Convert.ToInt32(input) > int.MaxValue || Convert.ToInt32(input) < int.MinValue)
            throw new Exception("первое исключение");
    }
    catch
    {
        throw new Exception("первое исключение");
    }
    if (!Int32.TryParse(input, out numerator))
        throw new Exception("второе исключение");
    if (Convert.ToInt32(input) == 0)
        throw new Exception("третье исключение");
}
catch (Exception ex)
{
    numerator = rand.Next(1, 30);
    Console.WriteLine(ex.Message + "\nзаменим на это: " + numerator);
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



до 10-ой строки доходит лишь потому что было введено число, а не что попало, которое отсеивается исключением в 5-ой строке
по правильному надо сперва использовать Int32.TryParse а уже потом без всяких Convert.ToInt32 (уже ведь пропарсили) сравнивать на допустимость интервалов
но Int32.TryParse не пройдет если ввод выходит за интервал Int32

а если задача стоит только лишь в том, чтобы научиться отлавливать исключения, то нужно просто первое условие заключить в try-catch, типа того:
Код

try
{
    Console.WriteLine("здесь ввод");
    string input = Console.ReadLine();
    try
    {
        if (Convert.ToInt32(input) > int.MaxValue || Convert.ToInt32(input) < int.MinValue)
            throw new Exception("первое исключение");
    }
    catch
    {
        throw new Exception("первое исключение");
    }
    if (!Int32.TryParse(input, out numerator))
        throw new Exception("второе исключение");
    if (Convert.ToInt32(input) == 0)
        throw new Exception("третье исключение");
}
catch (Exception ex)
{
    numerator = rand.Next(1, 30);
    Console.WriteLine(ex.Message + "\nзаменим на это: " + numerator);
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



до 10-ой строки доходит лишь потому что было введено число, а не что попало, которое отсеивается исключением в 5-ой строке
по правильному надо сперва использовать Int32.TryParse а уже потом без всяких Convert.ToInt32 (уже ведь пропарсили) сравнивать на допустимость интервалов
но Int32.TryParse не пройдет если ввод выходит за интервал Int32

а если задача стоит только лишь в том, чтобы научиться отлавливать исключения, то нужно просто первое условие заключить в try-catch, типа того:
Код

try
{
    Console.WriteLine("здесь ввод");
    string input = Console.ReadLine();
    try
    {
        if (Convert.ToInt32(input) > int.MaxValue || Convert.ToInt32(input) < int.MinValue)
            throw new Exception("первое исключение");
    }
    catch
    {
        throw new Exception("первое исключение");
    }
    if (!Int32.TryParse(input, out numerator))
        throw new Exception("второе исключение");
    if (Convert.ToInt32(input) == 0)
        throw new Exception("третье исключение");
}
catch (Exception ex)
{
    numerator = rand.Next(1, 30);
    Console.WriteLine(ex.Message + "\nзаменим на это: " + numerator);
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
chupachups
Дата 9.12.2016, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: нет
Всего: 1



до 10-ой строки доходит лишь потому что было введено число, а не что попало, которое отсеивается исключением в 5-ой строке
по правильному надо сперва использовать Int32.TryParse а уже потом без всяких Convert.ToInt32 (уже ведь пропарсили) сравнивать на допустимость интервалов
но Int32.TryParse не пройдет если ввод выходит за интервал Int32

а если задача стоит только лишь в том, чтобы научиться отлавливать исключения, то нужно просто первое условие заключить в try-catch, типа того:
Код

try
{
    Console.WriteLine("здесь ввод");
    string input = Console.ReadLine();
    try
    {
        if (Convert.ToInt32(input) > int.MaxValue || Convert.ToInt32(input) < int.MinValue)
            throw new Exception("первое исключение");
    }
    catch
    {
        throw new Exception("первое исключение");
    }
    if (!Int32.TryParse(input, out numerator))
        throw new Exception("второе исключение");
    if (Convert.ToInt32(input) == 0)
        throw new Exception("третье исключение");
}
catch (Exception ex)
{
    numerator = rand.Next(1, 30);
    Console.WriteLine(ex.Message + "\nзаменим на это: " + numerator);
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.