Junior
Pode haver vários blocos catch em C# para tratar exceções?
sobes.tech IA
Resposta da IA
Sim, pode haver vários blocos catch. Isto permite tratar diferentes tipos de exceções de forma distinta.
Quando ocorre uma exceção, o CLR verifica sequencialmente os blocos catch de cima para baixo, começando pelo primeiro. O primeiro bloco catch cujo tipo de exceção corresponde ao tipo da exceção lançada ou é a sua classe base é executado.
try
{
// Código que pode lançar uma exceção
}
catch (ArgumentNullException ex)
{
// Tratamento da exceção ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
// Tratamento da exceção IndexOutOfRangeException
}
catch (Exception ex)
{
// Tratamento de todas as outras exceções (classe base Exception)
// Este bloco geralmente é colocado por último
}
finally
{
// Código que será sempre executado, independentemente de uma exceção ter sido lançada ou não
}
É importante colocar os blocos catch desde os tipos de exceções mais específicos até aos menos específicos (classes base). O bloco catch (Exception ex) deve vir por último, pois captura todas as exceções.