Throw a format exception C#
-
03-07-2021 - |
Question
I'm trying to throw a format exception in the instance someone tries to enter a non-integer character when prompted for their age.
Console.WriteLine("Your age:");
age = Int32.Parse(Console.ReadLine());
I'm unfamiliar with C# language and could use help in writing a try catch block for this instance.
Thanks very much.
La solution
That code will already throw an FormatException
. If you mean you want to catch it, you could write:
Console.WriteLine("Your age:");
string line = Console.ReadLine();
try
{
age = Int32.Parse(line);
}
catch (FormatException)
{
Console.WriteLine("{0} is not an integer", line);
// Return? Loop round? Whatever.
}
However, it would be better to use int.TryParse
:
Console.WriteLine("Your age:");
string line = Console.ReadLine();
if (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
// Whatever
}
This avoids an exception for the fairly unexceptional case of user error.
Autres conseils
What about this:
Console.WriteLine("Your age:");
try
{
age = Int32.Parse(Console.ReadLine());
}
catch(FormatException e)
{
MessageBox.Show("You have entered non-numeric characters");
//Console.WriteLine("You have entered non-numeric characters");
}
No need to have a try catch block for that code:
Console.WriteLine("Your age:");
int age;
if (!Integer.TryParse(Console.ReadLine(), out age))
{
throw new FormatException();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow