Назад к вопросам
Junior — Middle
85
В чем заключается необходимость использования функции recover внутри defer в Go?
Компании, где спрашивали
Ecom.tech
Ответ от нейросети
sobes.tech AI
В Go функция recover используется для перехвата паники (panic) и предотвращения аварийного завершения программы. Однако recover работает только если вызывается внутри отложенной функции (defer).
Использование recover внутри defer позволяет:
- Безопасно обработать панику, например, залогировать ошибку или выполнить очистку ресурсов.
- Продолжить выполнение программы после паники, если это возможно.
Пример:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
// Код, который может вызвать panic
panic("something went wrong")
}
Если вызвать recover вне defer, она не поймает панику, и программа завершится аварийно. Поэтому recover всегда помещают внутрь defer для корректной обработки исключительных ситуаций.