Sobes.tech
Junior — Middle

Paaiškinkite funkcijų panic, defer ir recover sąveikos mechanizmą programavimo kalboje Go.

sobes.tech AI

Atsakymas iš AI

Go kalboje funkcijos panic, defer ir recover yra susijusios su klaidų valdymu ir išimtinėmis situacijomis.

  • panic — sukelia dabartinės funkcijos staigų pabaigą ir pradeda "panikos" procesą, kuris plinta per iškvietimų steką ir kviečia atidėtas defer funkcijas.
  • defer — atideda funkcijos vykdymą iki išėjimo iš dabartinės funkcijos, leidžiant atlikti valymą ar apdorojimą po panic.
  • recover — leidžia "pagauti" panic viduje atidėtoje funkcijoje ir išvengti programos užbaigimo.

Pavyzdys:

func pavyzdys() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Atstatyta nuo panikos:", r)
        }
    }()

    fmt.Println("Prieš paniką")
    panic("kažkas nepavyko")
    fmt.Println("Tai nebus vykdoma")
}

Čia, panic sukelia klaidą, defer su recover ją pagauja ir programa tęsia darbą be avarijos.