Junior — Middle
Je možné zachytiť a spracovať paniky vnútri volania defer v Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go môžete použiť defer na spracovanie paník, ale samotný volanie defer nezachytí paniku; je potrebné ju zachytiť vo vnútri funkcie odložené pomocou recover().
Príklad:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Chytená a spracovaná panika:", r)
}
}()
panic("niečo sa pokazilo")
}
Tu je recover() volané vo vnútri odloženej funkcie a umožňuje zachytiť paniku, ktorá vznikla v safeCall. Týmto spôsobom nie je možné priamo v defer "chytiť" paniku, ale je možné ju spracovať vo vnútri odloženej funkcie s recover().