No C#, uma exceção capturada em um bloco try-catch pode ser...

Próximas questões
Com base no mesmo assunto
Q1053564 Programação
No C#, uma exceção capturada em um bloco try-catch pode ser novamente lançada com a instrução:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a E - throw.

No C#, quando estamos trabalhando com exceções, utilizamos um mecanismo conhecido como bloco try-catch para tratar erros que podem ocorrer durante a execução do programa. Quando uma exceção é capturada pelo bloco catch, podemos decidir o que fazer com ela. Uma das opções é relançá-la, o que significa que a exceção será passada adiante na pilha de chamadas, dando a oportunidade para que outro bloco try-catch em um nível mais alto trate essa exceção, ou, caso não seja capturada novamente, será tratada pelo mecanismo padrão de exceções do runtime, que geralmente termina o programa e imprime a pilha de chamadas.

Para relançar uma exceção capturada em C#, usamos a instrução throw sem especificar a exceção, o que efetivamente relança a exceção atual que está sendo tratada. Veja um exemplo:

try {
    // Código que pode gerar exceção
} catch (Exception ex) {
    // Tratamento da exceção
    throw; // Relança a mesma exceção
}

É importante destacar que usar apenas throw preserva a pilha de chamadas original da exceção, o que é crucial para a depuração, enquanto usar new Exception() criaria uma nova exceção, perdendo o contexto original.

As outras alternativas não são instruções válidas em C# para relançar exceções. new Exception() cria uma nova exceção, forward e raise não são palavras-chave do C#, e Exception() parece uma tentativa de instanciar uma exceção, mas está incorreta pois falta a palavra-chave new.

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

e-

A throw statement can be used in a catch block to re-throw the exception that is caught by the catch statement.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch

Clique para visualizar este comentário

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