> Где используется recover в Go? (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: InDrive, Employcity
Стек: Go
> Пример ответа
recover используется в Go для перехвата паники (panic) и восстановления нормального выполнения программы. Основные сценарии применения:
-
Обработка паник в горутинах - внутри
defer-функции, чтобы предотвратить аварийное завершение всей программы. Например, в веб-сервере для каждого запроса запускается горутина, иrecoverв middleware позволяет логировать ошибку и возвращать HTTP 500, не убивая сервер. -
Защита критических секций - если сторонняя библиотека может вызвать панику,
recoverв обёртке гарантирует, что основной поток не упадёт. -
Чистка ресурсов - после паники можно освободить файлы, соединения или откатить транзакции.
Пример:
GOfunc safeHandler() {defer func() {if r := recover(); r != nil {log.Printf("Recovered from panic: %v", r)}}()// код, который может запаниковать}
Важно: recover работает только внутри defer, иначе он возвращает nil. Не стоит злоупотреблять - лучше использовать явную обработку ошибок (error handling).
> Похожие задачи по backend
Как защититься от SQL-инъекций
Какое взаимодействие между сервисами предпочтительнее: синхронное или асинхронное
Для чего используются NoSQL решения?
Как используется WaitGroup для ожидания завершения горутин в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью