如果 int.TryParse(string, out int) 不适合 int,我该如何处理,即。他们输入了一个非常大的数字

How can i handle if int.TryParse(string, out int) can't fit the int, ie. they enter a really big number

当用户在控制台应用程序中输入非整数字符串时,我有这段代码来处理事件:

        string input = Console.ReadLine();
        int num;
            while (!int.TryParse(input, out num))
            {                                 

                Console.Clear();
                Console.WriteLine("Enter a number, try again");
                input = Console.ReadLine();

            }

Ofc,如果他们输入一个非常大的数字,它会写出相同的 "Enter a number, try again"。我知道我可以将它更改为 UI64 或其他大整数,但您仍然可以输入一个太大的数字。有没有一种简单的方法来检查 TryParse 或 num 变量是否存在这种溢出?

try-catch 语句中使用 Int32.Parse

try {
    Int32.Parse(string);
} catch (System.OverflowException e) {
    // do stuff
}
// be sure to catch all other possible exceptions here

https://msdn.microsoft.com/en-us/library/b3h1hf19(v=vs.110).aspx

TryParse 方法已经在内部处理了此类问题,不允许您手动捕获异常。 Parse 方法 可能会失败 并会抛出异常,因此您必须捕获所有其他可能的异常。有关该方法可能抛出的所有其他异常,请参阅上面的 link。

当输入的值小于Int32.MinValue或大于Int32.MaxValue时出现OverflowException