Como Corrigir o Erro de Exception Index Out Of Range

O erro de Exception Index Out Of Range na Unity ocorre quando você tenta acessar um índice que está fora do intervalo de limites permitido de uma matriz, lista ou outra coleção de dados. Existem algumas maneiras de identificar e corrigir esse erro na Unity:

  1. Verifique o código:

    A primeira etapa para resolver o erro de Exception Index Out Of Range é verificar se o índice que você está tentando acessar está dentro do intervalo permitido, um erro muito comum é acabar se esquecendo do valor limite que foi atribuído a uma variável ou até mesmo não levar em consideração se esta mesma variável está sendo chamada dentro de um loop, pois a interação incorreta de um loop pode resultar em uma exceção de índice.

  2. Depuração:

    Use o depurador da Unity para identificar o problema. Adicione pontos de interrupção em seu código e execute o programa em modo de depuração. Quando a execução atingir o ponto de interrupção, verifique os valores das variáveis ​​relevantes e confirme se o índice está dentro do intervalo permitido, vou te mostrar alguns exemplos de Debug.Log(“”) a seguir:

    1. Verificando um índice em uma matriz:

      int[] array = { 1, 2, 3, 4, 5 };

      int index = 6;if (index >= 0 && index < array.Length) {
      Debug.Log(“O índice ” + index + ” está dentro do intervalo permitido.”);
      } else {
      Debug.LogError(“O índice ” + index + ” está fora do intervalo permitido.”);
      }

    2. Verificando um índice em uma Lista:

      List<int> list = new List<int> { 1, 2, 3, 4, 5 };
      int index = 6;if (index >= 0 && index < list.Count) {
      Debug.Log(“O índice ” + index + ” está dentro do intervalo permitido.”);
      } else {
      Debug.LogError(“O índice ” + index + ” está fora do intervalo permitido.”);
      }

    3. Verificando um índice em uma String:

      string text = “OverGames!”;
      int index = 20;if (index >= 0 && index < text.Length) {
      Debug.Log(“O índice ” + index + ” está dentro do intervalo permitido.”);
      } else {
      Debug.LogError(“O índice ” + index + ” está fora do intervalo permitido.”);
      }

    4. Utilize a propriedade Length: Utilize a propriedade Length para obter o número de elementos na coleção e verifique se o índice está dentro do intervalo permitido. Por exemplo, se você tiver uma matriz de 10 elementos, o índice deve estar entre 0 e 9, nunca se esqueça que na programação o índice começa a contar a partir do zero. Por Exemplo:

      int[] array = { 1, 2, 3, 4, 5 };
      int index = 3;if (index >= 0 && index < array.Length)
      {
      int value = array[index];
      Debug.Log(“O valor no índice ” + index + ” é ” + value);
      }
      else
      {
      Debug.LogError(“O índice está fora do intervalo permitido.”);
      }

     

  3. Trate exceções:

    Utilize um bloco try-catch para lidar com o erro de Exception Index Out Of Range. Quando o erro ocorrer, o bloco catch irá capturá-lo e você poderá tratar o erro adequadamente, como exibindo uma mensagem de erro para o usuário.

    Por Exemplo:

    try {
    int[] array = { 1, 2, 3, 4, 5 };
    int index = 6;
    int value = array[index];
    Debug.Log(“O valor no índice ” + index + ” é ” + value);
    } catch (IndexOutOfRangeException e) {
    Debug.LogError(“O índice está fora do intervalo permitido: ” + e.Message);
    }

  4. Utilize o método Contains:

    O método Contains verifica se um item está presente na coleção, em vez de retornar seu índice.

    Por Exemplo:

    int[] array = { 1, 2, 3, 4, 5 };
    int value = 6;

    if (array.Contains(value)) {
    int index = Array.IndexOf(array, value);
    Debug.Log(“O valor ” + value + ” está no índice ” + index + “.”);
    } else {
    Debug.LogError(“O valor ” + value + ” não está presente na matriz.”);
    }

  5. Utilize o método TryGetValue:

    É útil utilizar o método TryGetValue se estiver trabalhando com um dicionário. O método TryGetValue verifica se uma chave está presente no dicionário e se estiver, retorna o valor correspondente.

    Por Exemplo:

    Dictionary<int, string> dictionary = new Dictionary<int, string>
    {
    { 0, “zero” },
    { 1, “um” },
    { 2, “dois” },
    { 3, “três” }
    };

    int index = 5;
    string value;

    if (dictionary.TryGetValue(index, out value))
    {
    Debug.Log(“O valor no índice ” + index + ” é ” + value);
    }
    else
    {
    Debug.LogError(“O índice está fora do intervalo permitido.”);
    }

Em resumo, as melhores formas para resolver o erro de Exception Index Out Of Range na Unity incluem verificar o código utilizando a depuração e também todas as propriedades ensinadas aqui. Ao adotar essas práticas recomendadas, você poderá evitar esse erro comum e manter seu código funcionando como deveria.

 3,969 visualizações

Comentários

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

Sobre o autor

Olá, eu me chamo Lucas, sou artista 3D/2D e programador há 2 anos, sou fundador da empresa No Clip Games, no qual o maior foco é jogos mobile.

Compartilhe esse post

Facebook
Twitter
Email
WhatsApp
LinkedIn
Pinterest