Junior — Middle
Bármilyen helyzetben vissza lehet állítani a program végrehajtását a Recover funkció segítségével a pánik után?
sobes.tech MI
Válasz az MI-től
Nem, a recover funkció a Go nyelvben nem használható fel a program végrehajtásának helyreállítására minden helyzetben pánik után.
A recover csak akkor működik, ha közvetlenül egy deferred függvényen belül hívják meg (defer). Ha pánik történik, és a hívási veremben van egy deferred függvény recover hívással, akkor az el tudja kapni a pánikot, és meg tudja akadályozni a program leállását.
Azonban, ha a recover nem hívódik meg deferred függvényben, vagy ha a pánik egy másik goroutine-ben történik, akkor a program hibával leáll.
Használati példa:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pánik elfogva:", r)
}
}()
panic("valami rosszul sült el")
}
Így, a recover egy helyi pánikkezelő mechanizmus, de nem univerzális eszköz a minden helyzetben való helyreállításra.