我有一个简单的程序,该程序从用户处获取一个数字并返回数组中该位置/索引处的数字。但是,如果给定数字不在索引范围内,则会引发异常。 这是我的代码:
int[] arr = { 1, 2, 3, 4, 5, 6 };
Console.WriteLine("input int");
int k = int.Parse(Console.ReadLine());
Console.WriteLine("before");
try
{
double n = 5 / k;
Console.WriteLine(n);
int l=arr[k];
Console.WriteLine(l);
}
catch (DivideByZeroException)
{
throw new ArgumentException("you cant divid by 0!");
}
catch (ArgumentOutOfRangeException)
{
throw new ArgumentException("please give a number between 0-5");
}
catch (Exception)
{
throw new ArgumentException("something went worng, please try again");
}
finally
{
Console.WriteLine("after");
Console.WriteLine("process compited!");
}
但是,问题是,如果输入的数字为7(不在范围内),则会显示ArgumentOutOfRangeException exception。 如果我希望异常像“请给一个0-5之间的数字”一样,我该怎么办? (使用try-catch方法)
答案 0 :(得分:1)
IndexOutOfRangeException和ArgumentOutOfRangeException之间存在区别。 您必须捕获IndexOutOfRangeException。
答案 1 :(得分:1)
请勿使用异常来指导您的应用程序逻辑流程。最好主动检查索引对于您的数组而言是否太大。该索引号是来自外部的输入,因此您有权在自己认为合适的地方加保护。
除了@Ciubotariu Florin是对的。