Middle
Mi történik, ha elindítasz egy goroutine-t és benne hívod a panic-et? A goroutine leáll vagy az egész alkalmazás?
sobes.tech MI
Válasz az MI-től
Ha egy panic fordul elő egy goroutine-ban, akkor az adott goroutine leáll, de az egész alkalmazás nem fog automatikusan bezárulni. A panic egy goroutine-ban nem okozza az összes goroutine vagy a program leállását, kivéve, ha eléri a gyökér szintet és kezeletlen marad.
A program váratlan leállásának elkerülése érdekében használhatod a recover-t ugyanabban a goroutine-ban vagy a hívó függvényben, hogy elfogd és kezeld a pánikot.
Példa:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Goroutine-ban elfogott pánik:", r)
}
}()
panic("valami rosszul sült el")
}()
Ebben a példában a pánik nem fogja az egész alkalmazás leállítását eredményezni, hanem a goroutine belsejében lesz kezelve.