Ошибки и defer

Тип error: возврат, проверка и оборачивание

Содержание курса

Рабочий диапазон глубины

Водолазные операции требуют строгого контроля рабочих глубин: слишком мелко — и погружение теряет смысл или становится опасным из-за волнения, слишком глубоко — и давление выходит за пределы безопасного диапазона. Поэтому любая система, принимающая значение глубины от оператора, обязана немедленно распознать нарушение границ и сообщить о нём точно, без размытых формулировок.

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

Чтобы цепочка ошибок не терялась при передаче вверх по стеку, внешняя проверка оборачивает исходную причину, добавляя собственный контекст, но сохраняя возможность докопаться до первопричины стандартными средствами сравнения ошибок. Итоговый вывод программы должен чётко различать оба типа нарушения и демонстрировать, что обёртывание не скрыло исходную информацию.

Что уже дано

В шаблоне объявлены две сигнальные ошибки: ErrTooShallow и ErrTooDeep.

Что нужно сделать

Допишите validateDepth и checkDivePlan. Рабочий диапазон глубины — от 5 до 30 метров включительно. Верните ErrTooShallow ниже диапазона и ErrTooDeep выше него. checkDivePlan добавляет контекст план погружения, сохраняя причину для errors.Is. В main уже выводятся разные причины для двух сигнальных ошибок.

Ввод и вывод

Программа читает одно целое число из stdin. Для допустимой глубины она печатает глубина принята: N м; иначе печатает ошибку с контекстом и строку причины.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    18
    
    Ожидаемый вывод
    глубина принята: 18 м
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы.

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