Junior
Poate exista mai multe blocuri catch în C# pentru tratarea excepțiilor?
sobes.tech AI
Răspuns de la AI
Da, pot exista mai multe blocuri catch. Acest lucru permite tratarea diferitelor tipuri de excepții în mod diferit.
Când apare o excepție, CLR verifică secvențial blocurile catch de sus în jos, începând cu primul. Se execută primul bloc catch al cărui tip de excepție corespunde tipului excepției aruncate sau este clasa sa de bază.
try
{
// Cod care poate arunca o excepție
}
catch (ArgumentNullException ex)
{
// Tratarea excepției ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
// Tratarea excepției IndexOutOfRangeException
}
catch (Exception ex)
{
// Tratarea tuturor celorlalte excepții (clasa de bază Exception)
// Acest bloc este de obicei plasat la final
}
finally
{
// Cod care va fi întotdeauna executat, indiferent dacă a fost aruncată o excepție
}
Este important să plasați blocurile catch de la tipurile de excepții mai specifice la cele mai generale (clasele de bază). Blocul catch (Exception ex) trebuie să fie ultimul, deoarece capturează toate excepțiile.