Sobes.tech
Назад к вопросам
Middle
4

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

Компании, где спрашивали
КасперскийКасперский

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

sobes.tech AI

Если в горутине происходит panic, то эта конкретная горутина остановится, но всё приложение в целом не завершится автоматически. Паника в горутине не приводит к остановке всех горутин или программы, если только она не достигнет корневого уровня и не останется необработанной.

Чтобы избежать аварийного завершения приложения, можно использовать recover внутри той же горутины или в вызывающей функции, чтобы перехватить панику и обработать её.

Пример:

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

В этом примере паника не приведёт к остановке всего приложения, а будет обработана внутри горутины.