当用户在控制台应用程序中输入非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
。