Sobes.tech
Middle

Wat gebeurt er als je een goroutine start en daarin panic aanroept? Stopt de goroutine of stopt de hele applicatie?

sobes.tech AI

Antwoord van AI

Als er een panic optreedt in een goroutine, stopt die specifieke goroutine, maar wordt de hele applicatie niet automatisch afgesloten. Een panic in een goroutine leidt niet tot het stoppen van alle goroutines of het programma, tenzij het de root-niveau bereikt en onbehandeld blijft.

Om een onverwacht afsluiten van de applicatie te voorkomen, kun je recover gebruiken binnen dezelfde goroutine of in de oproepende functie, om de panic op te vangen en te verwerken.

Voorbeeld:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panic opgevangen in goroutine:", r)
        }
    }()
    panic("er is iets mis gegaan")
}()

In dit voorbeeld zal de panic niet leiden tot het stoppen van de hele applicatie, maar wordt deze afgehandeld binnen de goroutine.