Sobes.tech
Junior — Middle

Jakie konsekwencje należy się spodziewać, jeśli w goroutine wystąpi panika?

sobes.tech AI

Odpowiedź od AI

Jeśli w goroutine wystąpi panika (panic), to wykonanie tej goroutine zostaje przerwane, a rozpoczyna się proces rozpakowywania stosu (stack unwinding), podczas którego wywoływane są funkcje odłożone (defer).

Jeśli panika nie zostanie obsłużona (np. za pomocą recover w funkcji odłożonej), spowoduje to zakończenie całego programu.

Ważne jest, aby zrozumieć, że panika w jednej goroutine nie wpływa bezpośrednio na inne goroutine — te kontynuują pracę, chyba że panika spowoduje zatrzymanie całego programu.

Przykład obsługi paniki:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Złapano i obsłużono panikę:", r)
        }
    }()
    panic("coś poszło nie tak")
}()