Назад к вопросам
Senior
2
Что будет, если запустить горутину и в ней вызвать panic?
Компании, где спрашивали
Лаборатория Касперского
Ответ от нейросети
sobes.tech AI
Если в горутине вызвать panic, то эта паника будет локальной для этой горутины и приведёт к её аварийному завершению, если не будет обработана (recover).
Важно:
- Паника в одной горутине не остановит другие горутины и не завершит всю программу, если она не произойдет в главной горутине.
- Чтобы избежать краха всей программы, нужно использовать
deferсrecoverвнутри горутины для перехвата паники.
Пример:
go func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паника перехвачена в горутине:", r)
}
}()
panic("что-то пошло не так")
}()
Без recover паника завершит выполнение этой горутины, но остальные продолжат работу.