Middle
Co się stanie, jeśli uruchomisz gorutynę i wywołasz panic w jej środku? Gorutyna się zatrzyma czy cała aplikacja?
sobes.tech AI
Odpowiedź od AI
Jeśli w goroutine wystąpi panic, to ta konkretna goroutine się zatrzyma, ale cała aplikacja jako całość nie zostanie automatycznie zamknięta. Panic w goroutine nie powoduje zatrzymania wszystkich goroutine lub programu, chyba że osiągnie poziom korzenia i pozostanie nieobsłużony.
Aby uniknąć nagłego zamknięcia aplikacji, można użyć recover wewnątrz tej samej goroutine lub w funkcji wywołującej, aby przechwycić panic i obsłużyć go.
Przykład:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Przechwycono panic w goroutine:", r)
}
}()
panic("coś poszło nie tak")
}()
W tym przykładzie panic nie spowoduje zatrzymania całej aplikacji, a zostanie obsłużony wewnątrz goroutine.