Junior — Middle
Was ist die Notwendigkeit, die Funktion recover innerhalb von defer in Go zu verwenden?
sobes.tech KI
Antwort von 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 для корректной обработки исключительных ситуаций.