-
1-Quando é acionado o método falha(); O sistema avança imediatamente para o catch tratando a falha que foi forçada forçada (RuntimeException)
Dessa maneira ocorre a impressão System.out.print("A2");
2-Após esse cenário ocorre a execução do finally, independente do try /catch ser executado ( imprime System.out.print("A4");
3-e por fim System.out.print("A5");
***Cuidado com questões da banca FGV sempre tem uma pegadinha.
-
letra D
public class X
{
public static void main(String [] args)
{
try
{
falha(); avança para runtime exception
System.out.print("A1");
}
catch (RuntimeException ex)
{
System.out.print("A2");IMPRIME A2
}
catch (Exception ex1)
{
System.out.print("A3");
}
finally
{
System.out.print("A4");IMPRIME A4
}
System.out.print("A5");IMPRIM A5
}
public static void falha()
{
throw new RuntimeException();
}
}
-
Alternativa correta: D.
.
.
Complementando: em um bloco try, caso ocorra uma falha em algum dos comandos contidos nele, o bloco encerra a execução. Ele não vai executar os demais comandos. Ao invés disso, ele vai ir diretamente para o bloco de tratamento do erro em questão.
.
Por fim, independentemente do que aconteceu, o bloco finally é executado. Aí depois o programa sai do bloco try-catch-finally e executa o resto do programa.