Ошибки и defer

defer: порядок выполнения и отличие ожидаемой ошибки от panic

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

Журнал обработки

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

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

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

Допишите функцию process. Сначала зарегистрируйте вывод закрыть журнал, затем — сохранить итог. Из-за LIFO при выходе строки появятся в обратном порядке. При n < 0 верните errors.New("отрицательное количество") до основного сообщения. Иначе выведите обработано: N и верните nil.

Формат ввода

Одно целое число.

Формат вывода

При неотрицательном числе: сообщение об обработке, затем сохранить итог и закрыть журнал. При отрицательном: оба финальных сообщения, затем сообщение об ошибке.

Пример

Ввод:
3

Вывод:
обработано: 3
сохранить итог
закрыть журнал
О данных в ответах

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

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

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

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