Добрый день.
0. Блок if-else надо помещать в блок try. Так как зачем сравнивать если произошла ошибка?
1. В вашем случае лучше использовать ReadKey, так как по условию один символ от 1 до 5.
2. Желательно использовать блок finally, но в вашем случае не обязательно.
3. На мой взгляд много лишних проверок
Обработка ошибок в принципе реализована правильно, но надо помнить, что это достаточно тяжелая операция и в данном случае избыточная. В данном случае можно проверять через TryParse. Я бы решил так -
static void Main()
{
int number_user1 = 0;
while (true)
{
Console.Write("Player 1 write number from 1 to 5: ");
string inputChar = Console.ReadKey().KeyChar.ToString();
if(int.TryParse(inputChar, out number_user1) && number_user1 <= 5 && number_user1 > 0)
{
break;
}
else
{
Console.WriteLine($"\nEnter only NUMBERS from 1 to 5 (you input {inputChar})");
}
}
Console.WriteLine($"\nYou input {number_user1}");
Console.Write("Press any key to close"); Console.ReadKey();
}
Также почитайте -
https://docs.microsoft.com/en-us/dotnet/standard/e...
https://habrahabr.ru/post/221723/
https://habrahabr.ru/post/178805/
и
https://stackoverflow.com/questions/14973642/how-u...