Sobes.tech
Senior

Bir goroutine başlatıp içinde panic çağırırsanız ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

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

Важно:

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

Пример:

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

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