IndexOutOfRangeException
IndexOutOfRangeException бросает среда,
если индекс массива меньше 0 или не
меньше Length. Это не
ArgumentOutOfRangeException:
тот связан с аргументами методов и
индексаторов. Перехват - через
catch.
Синтаксис
int[] nums = { 1, 2, 3 };
int cell = nums[5];
Пример
Давайте обратимся к элементу 5
и поймаем исключение:
using System;
class Program
{
static void Main()
{
try
{
int[] nums = { 1, 2, 3 };
int res = nums[5];
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте используем отрицательный индекс:
using System;
class Program
{
static void Main()
{
try
{
int[] nums = { 1, 2, 3 };
int res = nums[-1];
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте прочитаем допустимый элемент без ошибки:
using System;
class Program
{
static void Main()
{
int[] nums = { 1, 2, 3 };
try
{
Console.WriteLine(nums[1]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
2
Смотрите также
-
ArgumentOutOfRangeException,
который бросают методы и индексаторы -
KeyNotFoundException,
когда нет ключа в словаре -
блок
catch,
которым ловят выход за границу -
NullReferenceException,
когда ссылка равнаnull