سؤال

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.

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top