@Ledington

Как обработать функцию и записать все ее ошибки и вывести итог?

Такой вопрос.
У меня есть цикл, который обрабатывает входной параметр, следит за тем, что вводит пользователь.
Т.е. он должен вводить четные числа, если он введет символ, дробное число, букву и т.д., то выпадает сообщение об ошибке. И так на каждую переменную. А как сделать, чтобы он не выдавал сразу сообщение, а записал все что ввел пользователь и в конце только выдал общее сообщение об ошибке, что несколько параметров было введено не правильно?

Код цикла
static int GetInput(string paramName, Severity ex)
        {
            //задаем произвольное начальное значение
            int result = Int32.MinValue;

            //цикл обработки значения
            while (true) 
            {
                try
                {
                    Console.Write($"\nВведите значение <{paramName}>: ");
                    var x = Console.ReadLine();
                    int xi = int.Parse(x);
                    result = xi;

                    if (xi % 2 == 0)

                    {
                        break;
                    }

                    Throw(ex);
                    throw new System.FormatException();
                }

                //сообщение об ошибке на ввод нечетного числа 
                catch (ArgumentNullException) { } 

                //сообщение об ошибке на ввод букв, дробных значений и т.д.
                catch (System.FormatException) 
                {
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.ForegroundColor = ConsoleColor.Black;
                    Console.WriteLine("\n***********************************************************************");
                    Console.WriteLine("*Ошибка: Один из идентифицированных элементов имел недопустимый формат*");
                    Console.WriteLine("***********************************************************************");
                    Console.ResetColor();
                } 
            }
            return result;
        }

Отработка кода

Введите значение <a>: вап

***********************************************************************
*Ошибка: Один из идентифицированных элементов имел недопустимый формат*
***********************************************************************

Как должно быть

Введите значение <a>: вап
Введите значение <b>: 1.5
Введите значение <c>: ...

***********************************************************************
*Ошибка: Один из идентифицированных элементов имел недопустимый формат*
***********************************************************************
Введенное значение <a>: вап
Введенное значение <b>: 1.5
Введенное значение <c>: ...
***********************************************************************

Введите значение <a>:

  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks Куратор тега C#
static int GetInput(string paramName)
        {
            while (true) 
            {
                Console.Write($"\nВведите значение <{paramName}>: ");
                if (int.TryParse(Console.ReadLine(), out int xi) && xi % 2 == 0) return xi;
                else 
                {
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.ForegroundColor = ConsoleColor.Black;
                    Console.WriteLine("\n***********************************************************************");
                    Console.WriteLine("*Ошибка: Один из идентифицированных элементов имел недопустимый формат*");
                    Console.WriteLine("***********************************************************************");
                    Console.ResetColor();
                } 
            }
        }
Ответ написан
@oleg_ods
Создать массив строк и вместо вывода ошибок на консоль писать в него.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы