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