L
L
Ledington2021-09-10 09:22:25
Command line
Ledington, 2021-09-10 09:22:25

How to process a function and record all its errors and output the result?

A question.
I have a loop that processes an input parameter, keeps track of what the user enters.
Those. he must enter even numbers, if he enters a symbol, fractional number, letter, etc., then an error message appears. And so on for each variable. And how can I make it so that it does not immediately issue a message, but writes down everything that the user entered and at the end only gives a general error message that several parameters were entered incorrectly?

Cycle code
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;
        }

Code development

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

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

It should be

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

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

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

Answer the question

In order to leave comments, you need to log in

2 answer(s)
G
Griboks, 2021-09-10
@Griboks

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();
                } 
            }
        }

O
oleg_ods, 2021-09-10
@oleg_ods

Create an array of strings and instead of outputting errors to the console, write to it.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question