Выбор ответа Junior Исключения обновлено
Порядок блоков catch
Вопрос
Что будет, если сначала написать catch (Exception), а после него catch (ArgumentException)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка компиляции: второй блок недостижим. Блоки catch проверяются сверху вниз, и первый подходящий выигрывает.
Варианты ответа
- Ошибка компиляции: второй блок недостижимправильный ответ
- Сработает более специфичный
catch (ArgumentException) - Сработают оба блока по очереди
- Предупреждение, но всё будет работать как задумано
Разбор
Блоки catch проверяются сверху вниз, и первый подходящий выигрывает. Exception ловит всё, поэтому блок для ArgumentException никогда не выполнится, и компилятор выдаёт ошибку CS0160. Специфичные исключения пишут выше общих. Срабатывает всегда только один catch.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.