Back to questions
Касперский
Middle
3
Что будет, если запустить горутину и в ней вызвать panic? Горутина остановится или остановится всё приложение?
Companies where asked
Answer from AI
sobes.tech AI
Если в горутине происходит panic, то эта конкретная горутина остановится, но всё приложение в целом не завершится автоматически. Паника в горутине не приводит к остановке всех горутин или программы, если только она не достигнет корневого уровня и не останется необработанной.
Чтобы избежать аварийного завершения приложения, можно использовать recover внутри той же горутины или в вызывающей функции, чтобы перехватить панику и обработать её.
Пример:
go func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паника перехвачена в горутине:", r)
}
}()
panic("что-то пошло не так")
}()
В этом примере паника не приведёт к остановке всего приложения, а будет обработана внутри горутины.