A descrição da resposta certa me parece equivocada, gostariam que avaliassem e corrigissem para não gerar duvida. A questão fala do try e catch c# 4: aula 2 as respostas estão trocadas entra a A e a C.
A descrição da resposta certa me parece equivocada, gostariam que avaliassem e corrigissem para não gerar duvida. A questão fala do try e catch c# 4: aula 2 as respostas estão trocadas entra a A e a C.
Olá Diego!
"Exceções do tipo DivideByZeroException
nunca serão capturados pelo catch (DivideByZeroException)
, pois o catch (Exception)
captura todos os tipos de exceção e deve ser definido por último."
Essa afirmação está correta. A avaliação de qual catch
tem o tipo de exceção que foi gerada sempre é de cima para baixo. Na aula é dito que deve vir primeiro as exceções mais específicas, como DivideByZeroException
e por último deve ficar as mais generalistas, como Exception
.
A questão C está correta porque qualquer exceção que bater em Exception
vai se enquadrar, tornando inútil o próximo catch
.
Quanto a questão A, está dizendo que mesmo Exception
estando abaixo de NullReferenceException
seria a exceção mais geral que seria chamada. Mas se tiver um NullReferenceException
esse será capturado pelo primeiro catch
.
Os catch
es são sempre avaliados de cima pra baixo. Será executada a ação do primeiro catch
onde se enquadrar a exceção.
Espero ter ajudado!