C# 中的 IndexOutOfRangeException
本文关键字:IndexOutOfRangeException 中的 | 更新日期: 2023-09-20 09:32:38
IndexOutOfRangeException
是一个异常,在访问索引超出其范围的集合元素时将引发该异常。
当使用无效索引访问集合的成员时,会发生这种情况。
以下示例引发IndexOutOfRange
异常:
示例:
int[] arr = new int[5] { 10, 30, 25, 45, 65};
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
Console.WriteLine(arr[2]);
Console.WriteLine(arr[3]);
Console.WriteLine(arr[4]);
Console.WriteLine(arr[5]); // throws IndexOutOfRange exception
在上面的示例中,arr
包含五个元素。当尝试访问值超过其总元素时,它将引发IndexOutOfRange
异常。
上面,尝试使用 arr[5]
访问第 6 个元素将引发IndexOutOfRange
异常。
防止索引超出范围异常的解决方案(Solutions to Prevent IndexOutOfRangeException)
解决方案 1:获取集合中的元素总数,然后检查集合的上限是否比其元素数少 1。
以下示例演示如何修复IndexOutOfRange
异常:
示例:
int[] arr = new int[5] { 10, 30, 25, 45, 65};
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
Console.WriteLine(arr[2]);
Console.WriteLine(arr[3]);
Console.WriteLine(arr[4]);
if(arr.Length >= 6)
Console.WriteLine(arr[5]);
}
解决方案 2:使用try catch blocks捕获IndexOutOfRangeException
。
示例:
static void Main()
{
try
{
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
Console.WriteLine(arr[2]);
Console.WriteLine(arr[3]);
Console.WriteLine(arr[4]);
Console.WriteLine(arr[5]); // throws IndexOutOfRange exception
}
catch(Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
}
在上面的示例中,包装在 try 块中的整个代码可能会引发错误。
catch 块具有可以捕获任何异常的Exception
筛选器。
因此,当 try 块中的 arr[5]
语句引发异常时,catch 块会捕获IndexOutOfRange
异常并显示错误消息,并继续执行。
本文内容总结: