RB Ruby  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Исключения и ensure

Тест «Исключения и ensure» проверяет чтение кода, объяснение причин, поиск скрытых рисков, выбор исправления и работу с граничными сценариями. В нём 20 вопросов, 10 заданий с Ruby-кодом и 4 тематических шкал.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 55 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 4 тематических результатов и разбор всех ответов.
Вопрос 1 из 20
Не запуская пример, выберите точный итог для блока «Иерархия ошибок». Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Иерархия ошибок
# Проследите выполнение и выберите точный результат.
begin
  10 / 0
rescue => error
  p [error.class, 'handled']
end
p ZeroDivisionError < StandardError
Вопрос 2 из 20
Какая трассировка кода по теме «Обработка ошибок через rescue» не теряет важную деталь? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Обработка ошибок через rescue
# Проследите выполнение и выберите точный результат.
require 'json'
result = begin
  JSON.parse('{')
rescue JSON::ParserError
  :bad_json
rescue StandardError
  :other
end
p result
Вопрос 3 из 20
Разберите выражения по порядку. Как завершится фрагмент из раздела «Гарантированное завершение через ensure»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Гарантированное завершение через ensure
# Проследите выполнение и выберите точный результат.
def run
  :work
ensure
  puts 'cleanup'
  :ignored
end
p run
Вопрос 4 из 20
Что покажет выполнение этого фрагмента из раздела «Повторная генерация»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Повторная генерация
# Проследите выполнение и выберите точный результат.
begin
  begin
    1 / 0
  rescue => e
    warn e.class.name
    raise
  end
rescue => outer
  p outer.class
end
Вопрос 5 из 20
Какое скрытое условие делает фрагмент «Иерархия ошибок» хрупким? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Иерархия ошибок
# Обычный запуск проходит. Найдите скрытый риск.
begin
  10 / 0
rescue => error
  p [error.class, 'handled']
end
p ZeroDivisionError < StandardError
Вопрос 6 из 20
Какой рабочий сбой вероятнее всего связан именно с механизмом «Обработка ошибок через rescue»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Обработка ошибок через rescue
# Обычный запуск проходит. Найдите скрытый риск.
require 'json'
result = begin
  JSON.parse('{')
rescue JSON::ParserError
  :bad_json
rescue StandardError
  :other
end
p result
Вопрос 7 из 20
Почему успешный пример ещё не доказывает надёжность решения «Гарантированное завершение через ensure»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Гарантированное завершение через ensure
# Обычный запуск проходит. Найдите скрытый риск.
def run
  :work
ensure
  puts 'cleanup'
  :ignored
end
p run
Вопрос 8 из 20
Что может сломаться при переносе этого решения «Повторная генерация» в рабочую систему? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Повторная генерация
# Обычный запуск проходит. Найдите скрытый риск.
begin
  begin
    1 / 0
  rescue => e
    warn e.class.name
    raise
  end
rescue => outer
  p outer.class
end
Вопрос 9 из 20
Какой контракт нужно помнить при ревью кода по теме «Иерархия ошибок»? Правильным считается только полностью согласованное утверждение.
Вопрос 10 из 20
Какое правило Ruby или Rails объясняет поведение в теме «Обработка ошибок через rescue»? Нужен вариант без логического разрыва между первой и второй частью.
Вопрос 11 из 20
Какое свойство Ruby или Rails определяет результат примера «Гарантированное завершение через ensure»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Вопрос 12 из 20
Как сформулировать правило блока «Повторная генерация» без лишних обещаний? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 13 из 20
Какое изменение устраняет причину проблемы в теме «Иерархия ошибок», а не маскирует симптом? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Иерархия ошибок
# Выберите изменение, которое исправляет причину.
begin
  10 / 0
rescue => error
  p [error.class, 'handled']
end
p ZeroDivisionError < StandardError
Вопрос 14 из 20
Какое действие добавляет недостающую гарантию в блоке «Обработка ошибок через rescue»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Обработка ошибок через rescue
# Выберите изменение, которое исправляет причину.
require 'json'
result = begin
  JSON.parse('{')
rescue JSON::ParserError
  :bad_json
rescue StandardError
  :other
end
p result
Вопрос 15 из 20
Какое действие добавляет недостающую гарантию в блоке «Гарантированное завершение через ensure»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 16 из 20
Что нужно поменять, чтобы ошибка «Повторная генерация» не возвращалась при следующем изменении? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 17 из 20
Какой регрессионный пример обнаружит ошибочное обобщение в теме «Иерархия ошибок»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 18 из 20
Что следует добавить в набор проверок по теме «Обработка ошибок через rescue», чтобы поймать редкий отказ? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 19 из 20
Что следует добавить в набор проверок по теме «Гарантированное завершение через ensure», чтобы поймать редкий отказ? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 20 из 20
Какой тест даст новую информацию о надёжности решения «Повторная генерация»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу