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")
}()