Sobes.tech
Middle

Какво ще стане, ако стартирате goroutine и в нея извикате panic? Горутина ще спре ли или ще спре цялото приложение?

sobes.tech AI

Отговор от AI

Ако в горутината възникне panic, тази конкретна горутина ще спре, но цялото приложение като цяло няма да се затвори автоматично. Паника в горутината не води до спиране на всички горутини или на програмата, освен ако не достигне кореновото ниво и остане необработена.

За да избегнете аварийното затваряне на приложението, можете да използвате recover в същата горутина или в извикващата функция, за да уловите и обработите паниката.

Пример:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Уловена паника в горутината:", r)
        }
    }()
    panic("нещо се обърка")
}()

В този пример, паниката няма да доведе до спиране на цялото приложение, а ще бъде обработена вътре в горутината.