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

Строгая гарантия исключений

Вопрос

Что означает строгая гарантия безопасности исключений?

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

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

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

Коротко

Правильный ответ: При исключении состояние программы такое же, как до вызова. Строгая гарантия это транзакционность: либо операция выполнилась полностью, либо ничего не изменилось.

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

  1. Операция никогда не бросает исключений и помечена noexcept
  2. После исключения объект корректен, но его состояние могло измениться
  3. При исключении состояние программы такое же, как до вызоваправильный ответ
  4. Исключение обязательно будет поймано обработчиком в той же функции

Разбор

Строгая гарантия это транзакционность: либо операция выполнилась полностью, либо ничего не изменилось. Обычно её получают, делая работу на копии и затем обмениваясь noexcept.

  • «Никогда не бросает» это гарантия nothrow.
  • «Корректно, но изменено» это базовая гарантия.
  • Гарантии описывают состояние объектов, а не наличие обработчика.

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

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

Термины по теме