如果 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
。
当用户在控制台应用程序中输入非整数字符串时,我有这段代码来处理事件:
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
。