Sobes.tech
Back to questions
Junior — Middle
84

В чем заключается необходимость использования функции recover внутри defer в Go?

Companies where asked
Ecom.tech

Answer from AI

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 для корректной обработки исключительных ситуаций.