recover — это встроенная функция, которая позволяет тебе вернуть контроль над выполнением программы после того, как произойдёт panic. Она даёт возможность обработать ошибку аккуратно, вместо того чтобы программа просто упала.
Когда происходит panic, нормальный ход выполнения прерывается и программа начинает разворачивать стек вызовов. Если recover вызывается внутри отложенной функции, он перехватывает panic и возвращает значение, которое было передано в panic, позволяя программе продолжить работу.
recover работает только внутри отложенной функцииpanic()recover() возвращает nilrecover() прекращает распространение panicdefer func() {
if r := recover(); r != nil {
fmt.Println("Восстановились после panic:", r)
}
}()
panic("что-то пошло не так")
Используй recover когда нужно:
recover нужно использовать редко и только в критических местах. Это не замена нормальной обработке ошибок через возвращаемые значения. Если злоупотреблять recover, можно скрыть реальные проблемы и усложнить отладку.
recover() может перехватить panic только если он вызван непосредственно внутри deferred функции.
Новый — ещё не проверен сообществом
Вы