Назад к вопросам
СБЕР
Middle
2
Что произойдёт, если паника возникнет в горутине без defer-recover?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Если в горутине возникает паника (panic), и в этой же горутине нет отложенной функции с recover, то паника распространяется вверх по стэку вызовов этой горутины и приводит к завершению именно этой горутины. При этом остальные горутины продолжают работать.
Однако, если паника не будет обработана в главной горутине (main goroutine), то это приведёт к завершению всей программы с выводом стека вызовов.
Пример:
func main() {
go func() {
panic("ошибка в горутине")
}()
time.Sleep(time.Second) // чтобы горутина успела сработать
fmt.Println("программа продолжает работу")
}
В этом примере паника в горутине не остановит программу, так как она не в главной горутине и не обработана. Если же паника возникнет в главной горутине без recover, программа завершится с ошибкой.