recover() в Gorecover() — это встроенная функция Go, которая перехватывает и обрабатывает значения паники, позволяя твоей программе продолжить выполнение вместо краша.
recover()recover() должна вызываться внутри отложенной функции. Когда происходит паника, отложенная функция выполняется, и recover() получает значение паники.
Ключевые моменты:
recover() возвращает nil, если паники не былоrecover() возвращает значение паники, если паника активнаdefer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
}()
Эта отложенная функция выполняется перед возвратом из функции, проверяет, произошла ли паника, и корректно её обрабатывает.
recover() перехватывает значение паникиrecover() работает только в отложенных функциях, вызванных непосредственно из горутины, которая паникуетrecover() перехватит панику, программа продолжает выполнение из отложенной функцииrecover() вне отложенной функции или в отсутствие паники возвращает nildefer func() {
if r := recover(); r != nil {
log.Printf("Error recovered: %v", r)
}
}()
Используй recover() точечно для обработки ошибок в критических местах, где нужно предотвратить краш и сохранить стабильность сервиса.
Функцию recover() можно вызвать прямо в теле основной функции, чтобы перехватить значения паники из любой горутины в программе.
Новый — ещё не проверен сообществом
Вы