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



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

        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,如果他们输入了一个很大的数字,它会写同样的"输入一个数字,再试一次"。我知道我可以把它改成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方法可能会失败并引发异常,因此您必须捕获所有其他可能的异常。有关该方法可能引发的所有其他异常,请参阅上面的链接。

当输入的值低于Int32.MinValue或高于Int32.MaxValue时,会出现OverflowException

相关内容

最新更新