Junior — Middle
Ar galima sugauti ir apdoroti panikas defer iškvietimo viduje Go?
sobes.tech AI
Atsakymas iš AI
Go kalboje galite naudoti defer panikų valdymui, tačiau defer iškvietimas pats savaime negaudo panikos; ją reikia sugauti recover() viduje, atidėtoje funkcijoje, naudojant recover().
Pavyzdys:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pagauta ir apdorota panika:", r)
}
}()
panic("kažkas nepavyko")
}
Čia recover() yra iškviečiama viduje atidėtos funkcijos ir leidžia sugauti safeCall metu įvykusią paniką. Taigi, panikos tiesiogiai defer neįmanoma "pagauti", tačiau jas galima apdoroti viduje, naudojant recover().