Sobes.tech
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.