Junior — Middle
Lehet-e pánikokat fogni és kezelni a defer hívásban Go-ban?
sobes.tech MI
Válasz az MI-től
Go nyelvben a defer használható a pánikok kezelésére, de a defer hívás önmagában nem fogja el a pánikot; a pánikot a recover() segítségével a defer-rel késleltetett függvényen belül kell elkapni.
Példa:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pánik elkapva és kezelve:", r)
}
}()
panic("valami rosszul sült el")
}
Itt a recover() a késleltetett függvényen belül hívódik, és lehetővé teszi, hogy elkapjuk a safeCall-ban keletkezett pánikot. Így nem lehet közvetlenül a defer-ben "elkapni" a pánikot, de kezelni lehet a késleltetett függvényen belül a recover() segítségével.