5

年齢の入力を求められたときに誰かが整数以外の文字を入力しようとした場合に、フォーマット例外をスローしようとしています。

        Console.WriteLine("Your age:");
        age = Int32.Parse(Console.ReadLine());

私はC#言語に慣れていないので、このインスタンスのtrycatchブロックを作成する際にヘルプを使用できます。

どうもありがとう。

4

4 に答える 4

24

そのコードはすでに。をスローしFormatExceptionます。あなたがそれをキャッチしたいという意味なら、あなたは書くことができます:

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.
}

ただし、以下を使用することをお勧め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
}

これにより、かなり例外的なユーザーエラーの場合の例外が回避されます。

于 2012-09-23T06:22:48.807 に答える
3

これはどうですか:

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");
}
于 2012-09-23T06:25:48.227 に答える
0

そのコードのtrycatchブロックは必要ありません。

Console.WriteLine("Your age:");
int age;
if (!Integer.TryParse(Console.ReadLine(), out age))
{
    throw new FormatException();
}
于 2012-09-23T06:22:39.137 に答える