﻿# V6025\. Possibly index is out of bound\.

При доступе по индексу к переменной типа массив, список или строка может возникнуть исключение IndexOutOfBoundsException, если значение индекса оказывается за пределами допустимого диапазона\. Анализатор способен обнаружить некоторые ошибки такого рода\.

Например, это может произойти во время обхода массива в цикле:

```cpp
int[] buff = new int[25];
for (int i = 0; i <= 25; i++)
  buff[i] = 10;
```

Нужно помнить о том, что первый элемент массива имеет индекс 0, а последний – на единицу меньше размера массива\. Корректный вариант:

```cpp
int[] buff = new int[25];
for (int i = 0; i < 25; i++)
  buff[i] = 10;
```

Похожую ошибку можно сделать не только в цикле, но и при неправильной проверке индекса в условии:

```cpp
void ProcessOperandTypes(int opCodeValue, byte operandType)
{
  byte[] OneByteOperandTypes = new byte[0xff];
  if (opCodeValue < 0x100)
  {
    OneByteOperandTypes[opCodeValue] = operandType;
  }
  ...
}
```

Корректный вариант:

```cpp
void ProcessOperandTypes(int opCodeValue, byte operandType)
{
  byte[] OneByteOperandTypes = new byte[0xff];
  if (opCodeValue < 0xff)
  {
    OneByteOperandTypes[opCodeValue] = operandType;
  }
  ...
}
```

Также можно допустить ошибку при доступе к конкретному элементу массива или списка\.

```cpp
private Map<String, String> TransformListToMap(List<String> config)
{
  Map<String, String> map = new HashMap<>();
  if (config.size() == 10)
  {
    map.put("Base State", config.get(0));
    ...
    map.put("Sorted Descending Header Style", config.get(10));
  }
  ...
  return map;
}
```

В этом примере допущена ошибка в количестве записей в списке config\. Исправленный вариант выглядит следующим образом:

```cpp
private Map<String, String> TransformListToMap(List<String> config)
{
  Map<String, String> map = new HashMap<>();
  if (config.size() == 11)
  {
    map.put("Base State", config.get(0));
    ...
    map.put("Sorted Descending Header Style", config.get(10));
  }
  ...
  return map;
}
```