Задать вопрос
whtmst
@whtmst
https://band.link/whtmst

Новичок в C# / Правильно ли я написал вывод ошибки?

Доброго времени друзья. Возможно вопрос банальный и его не следует задавать, но мне хотелось бы услышать мнение людей которые разбираются в C#. Я новичок, только недавно начал изучать язык, прошел урок где показали способ поймать ошибку и вывести ее пользователю. Решил добавить этот способ в свое первое консольное приложение, которое делал до этого. В нем пользователь должен был ввести число от 1 до 5. Тогда я смог реализовать только цикл, что если введенное число было больше 5 или равно 0, то программа просила еще раз ввести число от 1 до 5 и так до бесконечности, пока пользователь это не сделает. Но была проблема в том что если вводить в консоль не число, а какой то символ или строку, то приложение выдавало ошибку FormatException и это было не гуд :(
И узнав немного о том как ловить ошибки и выводить их пользователю, я решил дополнить свое консольное приложение.
Вот код:
static void Main(string[] args)
        {
            int number_user1 = 0;
            bool repeat = true;


            while (repeat)
            {

                try
                {
                    Console.Write("Player 1 write number from 1 to 5: ");
                    number_user1 = Convert.ToInt32(Console.ReadLine());
                    while (number_user1 > 5 || number_user1 == 0)
                    {
                        Console.Write("ERROR: Player 1 PLEASE write number from 1 to 5: ");
                        number_user1 = Convert.ToInt32(Console.ReadLine());
                    }
                }

                catch (FormatException format_ex)
                {
                    Console.WriteLine("Enter only NUMBERS from 1 to 5");
                }

                if (number_user1 <= 5 && number_user1 != 0)
                {
                    repeat = false;
                }

                else
                {
                    repeat = true;
                }

            }

            Console.ReadKey();
        }
Хотелось бы узнать, правильно ли я построил логику захвата ошибки, ее вывода и т.п. (если что проверил, все работает, просто хотелось бы узнать мнение)
  • Вопрос задан
  • 1513 просмотров
Подписаться 2 Оценить Комментировать
Решение пользователя Smilleey К ответам на вопрос (3)
@Smilleey
Вот чуть покрасивее и покороче:
namespace TosterApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int input;
            do Console.WriteLine("Enter number between 0 and 5:");
            while (!int.TryParse(Console.ReadLine(), out input) || input <= 0 || input > 5);
            Console.WriteLine($"You entered {input}");
        }
    }
}
Ответ написан