O tratamento de exceções permite ao desenvolvedor gerenciar ...
O tratamento de exceções permite ao desenvolvedor gerenciar os erros durante a execução de um programa de forma organizada.
O seguinte bloco exemplifica o tratamento de exceções em uma linguagem orientada a objetos:
Utilizando o código apresentado e seu conhecimento sobre
tratamento de exceções, a alternativa correta é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa A está errada pois o comando finally não pega exceções.
A alternativa C está errada pois o bloco finally é sempre executado por último
A alternativa D está errada pois antes desse segundo catch foi capturado um catch(Exception) , que capturaria qualquer tipo de exceção .
A alternativa E está errada pois o finally é sempre executado.
A alternativa B pode não estar com a melhor redação, mas ainda é a mais correta. Vamos ler de trás pra frente a alternativa : Para ser capturado, qualquer comando que dispara uma exceção deve ser executado dentro de um bloco try. Isso está certo, mesmo nos casos que a exceção for lançada , para ela ser capturada ela tem que estar dentro de um bloco try, mesmo que dentro de outro método ou classe.
Portanto a alternativa correta é a letra B
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
Discordo veemente da opção apresentada como gabarito. Uma vez que as exceções podem ser executadas dentro de um bloco trows por exemplo.
https://msdn.microsoft.com/pt-br/library/ms164917.aspx
A letra D não poderia ser porque Exception sobrepõe IOException, e portanto entraria apenas no primeiro bloco.
Essa questão deveria ser anulada.
1) Se fosse em Java, daria erro de compilação, pois IOException herda de Exception. Logo, ele deveria ser declarado antes de IOException no catch
2) Como disse o lanterna negro, você pode jogar a exceção para o método chamador com o throws.
Então.
a) ERRADA. qualquer exceção precisa ser pega por um comando catch
b) ERRADA. conforme descrito no 2)
c) ERRADA. o bloco finally é o último a executar
d) ERRADA. conforme dito no item 1
e) ERRADA. O bloco finally sempre será executado, com a exceção quando houver um system.exit(). Em java pelo menos.
B - Para ser capturado precisa do bloco try catch. Caso não queira que a exceção seja capturada o programador pode lançar a exceção para o bloco que chamou o método utilizando o throws.
LETRA B
Reforçando o que o Junior disse, a banca quis dizer que um Catch deve ser usado aninhado com um Try.
Atenção na interpretação do Texto, isso mata muita gente, eu mesmo errei por isso.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo