Выбор ответа Middle Ошибки обновлено

assert, precondition и fatalError

Вопрос

Что останется в релизной сборке (-O)?

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

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

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

Коротко

Правильный ответ: precondition и fatalError. assert проверяется только в отладочной сборке (-Onone). precondition работает и в релизе (-O), исчезает лишь в -Ounchecked. fatalError срабатывает всегда.

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

  1. precondition и fatalErrorправильный ответ
  2. Только assert, остальные вырезаются
  3. Все три проверки
  4. Ни одной: всё только в Debug

Разбор

assert проверяется только в отладочной сборке (-Onone). precondition работает и в релизе (-O), исчезает лишь в -Ounchecked. fatalError срабатывает всегда. Отсюда выбор: assert для внутренних проверок разработчика, precondition для нарушений контракта, которые опасно игнорировать в продакшене.

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

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