Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 4 da Aula 6 - Exceções e controle de erros

Meu resultado foi diferente do esperado. No meu caso a resposta foi:

inicio do main inicio do metodo1 inicio do metodo2 erro: java.lang.ArrayIndexOutOfBoundsException: 10 fim do metodo1 fim do main


Minha classe:

class TesteErro {
    public static void main(String[] args) {
        System.out.println("inicio do main");
        metodo1();
        System.out.println("fim do main");
    }

    static void metodo1() {

        System.out.println("inicio do metodo1");
        try {
            metodo2();
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("erro: " + e);
        }
        System.out.println("fim do metodo1");
    }

    static void metodo2() {
        System.out.println("inicio do metodo2");
        int[] array = new int[10];        
        for (int i = 0; i <= 15; i++) {
                array[i] = i;   
        }
    }
}
1 resposta
solução!

Olá Eliton tudo bem?

Este erro java.lang.ArrayIndexOutOfBoundsException ocorre quando tentamos acessar uma posição inexistente em nosso array, em seu código você definiu um array com 10 posições e tentou acessar percorrendo no for do metodo 2 ate a posição 15 que não existe, por isso temos este erro, lembrando que o array começa em posição 0, ou seja, você pode acessar as posições [0],[1],[2],[3],[4],[5],[6],[7],[8],[9] fechando as 10 posições de seu array,

Ajustando seu código para percorrer apenas posições acessíveis do seu array,

class TesteErro {
    public static void main(String[] args) {
        System.out.println("inicio do main");
        metodo1();
        System.out.println("fim do main");
    }

    static void metodo1() {

        System.out.println("inicio do metodo1");
        try {
            metodo2();
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("erro: " + e);
        }
        System.out.println("fim do metodo1");
    }

    static void metodo2() {
        System.out.println("inicio do metodo2");
        int[] array = new int[10];        
        for (int i = 0; i < 10; i++) {
                array[i] = i;   
        }
    }
}

Espero ter ajudado e bons estudos,

Atenciosamente,

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software