Sobes.tech
Назад к вопросам
Senior
2

Что будет, если запустить горутину и в ней вызвать panic?

Компании, где спрашивали
Лаборатория Касперского

Ответ от нейросети

sobes.tech AI

Если в горутине вызвать panic, то эта паника будет локальной для этой горутины и приведёт к её аварийному завершению, если не будет обработана (recover).

Важно:

  • Паника в одной горутине не остановит другие горутины и не завершит всю программу, если она не произойдет в главной горутине.
  • Чтобы избежать краха всей программы, нужно использовать defer с recover внутри горутины для перехвата паники.

Пример:

go func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Паника перехвачена в горутине:", r)
        }
    }()
    panic("что-то пошло не так")
}()

Без recover паника завершит выполнение этой горутины, но остальные продолжат работу.