1
resposta

Por qual motivo o programa executa mesmo com a lógica errada ? ele criou uma posição nova ?, e por qual motivo o texto " esse texto não era impresso" não é expresso.

try {
    int[] vetor = new int[4];

    System.out.println("Antes da exception");

    vetor[4] = 1;

    System.out.println("Esse texto não será impresso");
} catch(ArrayIndexOutOfBoundsException exception){
    System.out.println("Exceção ao acessar um indice do vetor que não existe");
    }

    System.out.println("Esse texto será impresso após a exception");

}
1 resposta

Bom dia!

Fiz o teste com o seu código e apresentou para mim a seguinte sequencia de textos:

Antes da exception

Exceção ao acessar um indice do vetor que não existe

Esse texto será impresso após a exception

o texto "Esse texto não será impresso" não foi impresso no meu teste, pois houve uma exceção na linha anterior.

A questão da execução do código mesmo com erro. Sintaticamente seu código está perfeito, por isso ele é compilado. O erro ali é de execução, mas não de sintaxe.

O compilador irá verificar se o seu código está sintaticamente correto. Esse tipo de validação , em tempo de execução, não é pego pelo compilador. Por isso devemos tratar o nosso código com captura de exceções.