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