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