Выбор ответа Junior Исключения обновлено

Порядок блоков catch

Вопрос

Что будет, если сначала написать catch (Exception), а после него catch (ArgumentException)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ошибка компиляции: второй блок недостижим. Блоки catch проверяются сверху вниз, и первый подходящий выигрывает.

Варианты ответа

  1. Ошибка компиляции: второй блок недостижимправильный ответ
  2. Сработает более специфичный catch (ArgumentException)
  3. Сработают оба блока по очереди
  4. Предупреждение, но всё будет работать как задумано

Разбор

Блоки catch проверяются сверху вниз, и первый подходящий выигрывает. Exception ловит всё, поэтому блок для ArgumentException никогда не выполнится, и компилятор выдаёт ошибку CS0160. Специфичные исключения пишут выше общих. Срабатывает всегда только один catch.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.