Junior
Може ли в C# да има няколко блока catch за обработка на изключения?
sobes.tech AI
Отговор от AI
Да, може да има няколко блока catch. Това позволява да се обработват различни типове изключения по различен начин.
Когато възникне изключение, CLR проверява последователно блоковете catch отгоре надолу, започвайки от първия. Изпълнява се първият блок catch, чийто тип на изключението съвпада с типа на възникналото изключение или е неговият базов клас.
try
{
// Код, който може да предизвика изключение
}
catch (ArgumentNullException ex)
{
// Обработка на изключението ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
// Обработка на изключението IndexOutOfRangeException
}
catch (Exception ex)
{
// Обработка на всички останали изключения (базовият клас Exception)
// Този блок обикновено се поставя последен
}
finally
{
// Код, който винаги ще се изпълни, независимо дали е възникнало изключение
}
Важно е да подреждате блоковете catch от по-специфичните към по-общите типове изключения (базови класове). Блокът catch (Exception ex) трябва да бъде последен, тъй като улавя всички изключения.