Middle
Какво ще стане, ако стартирате goroutine и в нея извикате panic? Горутина ще спре ли или ще спре цялото приложение?
sobes.tech AI
Отговор от AI
Ако в горутината възникне panic, тази конкретна горутина ще спре, но цялото приложение като цяло няма да се затвори автоматично. Паника в горутината не води до спиране на всички горутини или на програмата, освен ако не достигне кореновото ниво и остане необработена.
За да избегнете аварийното затваряне на приложението, можете да използвате recover в същата горутина или в извикващата функция, за да уловите и обработите паниката.
Пример:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Уловена паника в горутината:", r)
}
}()
panic("нещо се обърка")
}()
В този пример, паниката няма да доведе до спиране на цялото приложение, а ще бъде обработена вътре в горутината.