Safe: паника становится ошибкой
На границе обработчиков «Полки» паника должна стать обычной ошибкой. Реализуйте safe: в defer-функции поймайте панику через recover и превратите её в err = fmt.Errorf("паника: %v", r).
Показать решение
GolangРешение
func safe(f func()) (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("паника: %v", r)
}
}()
f()
return nil
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн