Проверяет понимание обработки ошибок, panic/recover и устойчивости сервисов.
Если panic возникает внутри goroutine и не перехвачен recover, падает весь процесс. Panic в goroutine не изолирован от остальной программы.
В Go panic завершает весь процесс, а не только текущую goroutine.
Важно:
panic в любой goroutine → crash всей программы;
recover работает только в той же goroutine;
нельзя перехватить panic одной горутиной из другой.
Пример безопасного шаблона:
go func() {
defer func() {
if r := recover(); r != nil {
log.Error("panic recovered", r)
}
}()
work()
}()Когда допустим panic:
некорректное состояние программы;
нарушение инвариантов;
ошибки программиста.
В бизнес-логике и обработке запросов — panic недопустим.
Вывод: panic в goroutine без recover = падение сервиса.