Sobes.tech
Junior
138
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) должен идти последним, так как он перехватывает все исключения.