> Где используется recover в Go? (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: InDrive, Employcity

Стек: Go

> Пример ответа

recover используется в Go для перехвата паники (panic) и восстановления нормального выполнения программы. Основные сценарии применения:

  1. Обработка паник в горутинах - внутри defer-функции, чтобы предотвратить аварийное завершение всей программы. Например, в веб-сервере для каждого запроса запускается горутина, и recover в middleware позволяет логировать ошибку и возвращать HTTP 500, не убивая сервер.

  2. Защита критических секций - если сторонняя библиотека может вызвать панику, recover в обёртке гарантирует, что основной поток не упадёт.

  3. Чистка ресурсов - после паники можно освободить файлы, соединения или откатить транзакции.

Пример:

GO
func safeHandler() {
defer func() {
if r := recover(); r != nil {
log.Printf("Recovered from panic: %v", r)
}
}()
// код, который может запаниковать
}

Важно: recover работает только внутри defer, иначе он возвращает nil. Не стоит злоупотреблять - лучше использовать явную обработку ошибок (error handling).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью