Guard: re-panic чужой паники
Перехват на границе «Полки» обрабатывает только свои паники, чужую — бросает дальше. Реализуйте guard: поймайте панику, и если это не myPanic — сделайте panic(r) (re-panic), иначе отметьте handled = true.
Показать решение
GolangРешение
func guard(f func()) (handled bool) {
defer func() {
if r := recover(); r != nil {
if _, ok := r.(myPanic); !ok {
panic(r)
}
handled = true
}
}()
f()
return false
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн