Middle
Existe alguma diferença na ordem em que se escrevem os blocos catch?
sobes.tech IA
Resposta da IA
Sim, há. Os blocos catch são processados sequencialmente. Exceções mais específicas devem vir antes de exceções mais gerais.
try
{
// Código que pode gerar uma exceção
}
// Exceção mais específica
catch (System.FormatException ex)
{
// Tratamento do erro de formato
}
// Exceção menos específica
catch (System.Exception ex)
{
// Tratamento de todas as outras exceções
}
Se colocar a exceção mais geral primeiro, o bloco catch mais específico nunca será atingido para exceções que herdam da mais geral. Por exemplo, FormatException é herdeira de Exception. Se catch (Exception ex) estiver primeiro, ele capturará também FormatException.
Sequência incorreta:
try
{
// Código que pode gerar uma exceção
}
// Exceção geral
catch (System.Exception ex)
{
// Tratamento de todas as exceções, incluindo FormatException
}
// Este bloco nunca será atingido para FormatException,
// pois já foi capturado pelo bloco anterior
catch (System.FormatException ex)
{
// Este código não será atingido neste caso
}
O compilador C# emitirá um aviso ou erro por bloco catch inatingível.