how handle arrayindexoutofboundsexception java
Este tutorial fornece uma explicação detalhada sobre uma exceção importante lançada por matrizes Java, ou seja, ArrayIndexOutOfBoundsException com exemplos simples:
Aprendemos tudo sobre Arrays em nossos tutoriais anteriores. Os arrays são de natureza estática e sua dimensão ou tamanho é determinado no momento de sua declaração. Também sabemos que este tamanho ou o número de elementos declarados para a matriz são fixos e numerados a partir de 0.
converter ascii para int c ++
Às vezes, a lógica do programa é tal que o programa tenta acessar o elemento de um índice não existente. Por exemplo, devido a falhas em um programa, um programa pode tentar acessar o 11ºelemento na matriz de 10 elementos. Isso resulta em uma condição anormal.
=> Confira o treinamento Java completo para iniciantes
Java fornece uma exceção no pacote ‘java.lang’ que é lançada quando um índice de array não existente é acessado. Isso é conhecido como “ArrayIndexOutOfBoundsException”.
O que você aprenderá:
Índice de matriz fora dos limites de exceção
Como já afirmado, quando você tenta acessar os elementos da matriz além de um comprimento especificado ou um índice negativo, o compilador lança a ‘ArrayIndexOutOfBoundsException’.
ArrayIndexOutOfBoundsException implementa uma interface ‘serializável’ e deriva da ‘indexOutOfBoundsException’ que, por sua vez, é derivada da classe RuntimeException, que é uma subclasse da classe ‘exception’. Todas essas classes pertencem ao pacote ‘java.lang’.
ArrayIndexOutOfBoundsException é uma exceção não verificada em tempo de execução e, portanto, não precisa ser chamada explicitamente a partir de um método. A seguir está o diagrama de classe de ArrayIndexOutOfBoundsException que mostra a hierarquia de herança, bem como os construtores para essa exceção.
Diagrama de classe de ArrayIndexOutOfBoundsException
Conforme explicado anteriormente, a classe ArrayIndexOutOfBoundsException tem três superclasses, ou seja, java.lang.exception, java.lang. runtimeException e java.lang.indexOutOfBoundsException.
A seguir, veremos alguns exemplos de ArrayIndexOutOfBoundsException em java.
Exemplo de exceção ArrayIndexOutOfBounds
Vejamos o primeiro exemplo que mostra a exceção ArrayIndexOutOfBounds sendo lançada.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; //for loop iterates from 0 to 5 (length of array) for(int i=0;i<=subjects.length;i++) { //when ‘i’ reaches 5, it becomes invalid index and exception will be thrown System.out.print(subjects(i) + ' '); } }
Resultado:
No programa acima, temos matrizes de assuntos que consistem em 5 elementos. No entanto, no loop for, definimos a condição de iteração como i<=subjects.length. Thus for the last iteration, the value of i is 5 which exceeds the array size. Hence, when printing array elements, the iteration i=5, results in ArrayIndexOutOfBoundsException being thrown.
A seguir, está outro exemplo de acesso ao índice negativo.
class Main { public static void main(String() args) { //array of integers Integer() intArray = {10,20,30,40,50}; //index = 0; accessing element is successful System.out.println('First element: ' + intArray(0)); //index = -4; accessing fails. Exception thrown System.out.println('Last element: ' + intArray(-4)); }
Resultado:
No programa acima, declaramos um array do tipo inteiro e então acessamos os elementos usando índices individuais. A primeira expressão é válida, mas na segunda expressão, tentamos acessar o elemento em índice = -4. Portanto, a segunda expressão lança ArrayIndexOutOfBoundsException, conforme mostrado na saída.
Evitando ArrayIndexOutOfBoundsException
A causa comum para a ocorrência de ArrayIndexOutOfBoundsException é que o programador comete um erro ao usar os índices da matriz.
Assim, o programador pode seguir as técnicas abaixo para evitar a ocorrência de ArrayIndexOutOfBoundsException.
Use os índices adequados de início e fim
Matrizes sempre começam com índice 0 e não 1. Da mesma forma, o último elemento na matriz pode ser acessado usando o índice ‘arraylength-1’ e não ‘arraylength’. Os programadores devem ter cuidado ao usar os limites da matriz e, assim, evitar ArrayIndexOutOfBoundsException.
Usando Enhanced For Loop
Um loop for aprimorado ou loop for-each itera sobre locais de memória contíguos como matrizes e acessa apenas os índices legais. Portanto, quando o loop for aprimorado é usado, não precisamos nos preocupar com o acesso a índices errados ou ilegais.
Exemplo de iteração em uma matriz usando Enhanced for Loop.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; System.out.println('') //define enhanced for loop to iterate over array for(String strval:subjects) { //iterates only through valid indices System.out.print(strval + ' '); } } }
Resultado:
Usamos um loop for aprimorado no programa acima para iterar sobre a matriz de assuntos. Observe que, para este loop, não precisamos especificar o índice explicitamente. Conseqüentemente, o loop itera sobre o array até que o final do array seja alcançado.
Portanto, é fácil corrigir a ArrayOutOfBoundsException usando índices adequados e tomando cuidado ao especificar os limites da matriz. Também podemos usar o loop for aprimorado para iterar nos arrays.
Vamos continuar respondendo a algumas perguntas frequentes sobre exceções em arrays.
perguntas frequentes
P # 1) Por que ocorre ArrayIndexOutOfBoundsException?
Responda: ArrayIndexOutOfBoundsException ocorre quando você tenta acessar um índice de matriz que não existe, isto é. o índice é negativo ou está fora dos limites do array.
P # 2) O que é NegativeArraySizeException?
Responda: NegativeArraySizeException é uma exceção de tempo de execução lançada se uma matriz for definida com um tamanho negativo.
Q # 3) O que é exceção de array fora de limite?
Responda: Uma exceção de array fora do limite ocorre quando um programa tenta acessar um elemento de array especificando um índice negativo ou um índice que não está no intervalo do array especificado.
P # 4) Podemos lançar NullPointerException em Java?
Responda: Sim, você pode lançar NullPointerException em Java ou a JVM fará isso por você.
P # 5) NullPointerException está marcado ou desmarcado?
Responda: NullPointerException está desmarcado e estende RuntimeException. Não obriga o programador a usar o bloco catch para tratá-lo.
Conclusão
Neste tutorial, discutimos os detalhes de ArrayIndexOutOfBoundsException em Java. Essa exceção geralmente é lançada quando em um programa tentamos acessar os elementos da matriz usando o índice negativo ou índice fora dos limites, como especificar um índice maior do que o comprimento da matriz especificada.
Essa exceção pode ser evitada cuidando dos índices ao acessar os arrays ou usando o loop for aprimorado que, por design, acessa apenas índices legais.
Passaremos para outros tópicos de array em nossos tutoriais subsequentes.
=> Explore o curso Java GRATUITO aqui.
Leitura recomendada
- Tutorial de reflexão Java com exemplos
- Tutorial de comprimento de array Java com exemplos de código
- Exceções Java e tratamento de exceções com exemplos
- Tutorial de JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Modificadores de acesso em Java - Tutorial com exemplos
- Array Java - como imprimir elementos de um array em Java?
- Introdução à linguagem de programação Java - tutorial em vídeo
- Tutorial Java SWING: Container, Componentes e Manipulação de Eventos