Considere a seguinte Classe Excecao implementada em Java. p...

Próximas questões
Com base no mesmo assunto
Q874245 Programação
Considere a seguinte Classe Excecao implementada em Java.
public class Excecao {
        public static void main(String[] args) {             int num[] = new int[2];             try{                 num[0] = 3;                 num[1] = 4;                 num[2] = 6;                 System.out.println( "sucesso" );             } catch (ArraylndexOutOfBoundsException e) {                 System.out.println( "erro" );             }finally{                 System.out.println( "final" );             }         } }
Quais strings serão impressas no console?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: C - erro, final

Vamos entender o porquê dessa resposta. A questão aborda o tratamento de exceções em Java, um conceito fundamental em programação orientada a objetos e muito importante para evitar erros de execução inesperados. Quando lidamos com arrays em Java, acessos a índices inválidos podem gerar exceções, como a ArrayIndexOutOfBoundsException.

No código apresentado:

  • É criado um array num de tamanho 2, logo, ele possui os índices 0 e 1.
  • Dentro do bloco try, as linhas num[0] = 3; e num[1] = 4; estão corretas, pois acessam índices válidos.
  • No entanto, num[2] = 6; tenta acessar um índice fora do limite do array, o que gera uma ArrayIndexOutOfBoundsException.

Agora, analisemos o comportamento do código com essa exceção:

A exceção é capturada pelo bloco catch, que é especificamente configurado para lidar com ArrayIndexOutOfBoundsException. Quando a exceção é lançada, o controle é passado para dentro deste bloco, onde "erro" será impresso.

Independentemente do que acontece dentro do bloco try ou catch, o bloco finally sempre será executado, garantindo que "final" seja impresso.

Portanto, as strings que aparecem no console são: "erro" e "final", confirmando que a alternativa correta é a C.

Por que as outras alternativas estão incorretas?

  • A - "sucesso, erro, final": Não é possível que "sucesso" seja impresso, pois a exceção é lançada antes dessa linha ser executada.
  • B - "sucesso, final": A execução não chega à impressão de "sucesso" por causa da exceção.
  • D - "final": Embora "final" seja sempre impresso, "erro" também é impresso devido ao bloco catch.
  • E - "sucesso": "Sucesso" não é impresso porque a execução é interrompida pela exceção antes de chegar nessa linha.

Conclusão: Compreender o tratamento de exceções é essencial para lidar com erros em tempo de execução, garantindo que seu programa seja mais robusto e confiável.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Nessa questão podemos eliminar direto a alternativa E, Pois independente de sucesso ou erro o bloco finally sempre será executado.

 int num[] = new int[2]; Declara um vetor de 2 posições [0,1]

 num[0] = 3;
 num[1] = 4;
 num[2] = 6;  -> Ao tentar adicionar o 6 ocorre um estouro pois o vetor é de 2 posições e não 3, logo em seguida segue para o tratamento(Catch e finally).

print ->Erro

Print ->Final

C) erro, final

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo