Перейти к содержимому
Задача · Функции как значения · урок 12 из 12

★ Задача: паника в ошибку

Напишите функцию func safeCall(f func()) (err error). Она вызывает f. Если f паникует, safeCall возвращает ошибку с текстом panic: <значение паники> — значение печатается так, как его печатает fmt.Println. Если паники не было, safeCall возвращает nil.

  • safeCall(func() {}) → nil
  • safeCall(func() { panic("boom") }) → ошибка panic: boom
  • safeCall(func() { panic(42) }) → ошибка panic: 42

Ограничения: f вызывается ровно один раз; значение паники — любое: строка, число, ошибка или паника самого Go, например выход за границы среза; после пойманной паники следующий вызов safeCall работает как обычно.

Не добавляйте лишних импортов, если в задаче это прямо не сказано.

safecall.go — go
go · строк: 8
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом