Sobes.tech
Junior — Middle

Selgitage funktsioonide panic, defer ja recover omavahelist suhtlusmehhanismi Go programmeerimiskeeles.

sobes.tech AI

Vastus AI-lt

In Go, funktsioonid panic, defer ja recover on seotud vigade käsitlemise ja erandolukordadega.

  • panic — põhjustab praeguse funktsiooni ootamatu lõppemise ja käivitab "paanik" protsessi, mis levib kutsungipuu kaudu ja kutsub esile viivitusega defer funktsioonid.
  • defer — lükkab funktsiooni täitmise edasi kuni praegusest funktsioonist väljumiseni, võimaldades teha puhastust või töötlemist pärast panic-i.
  • recover — võimaldab "haakida" panic-i viivitusega funktsiooni sees ja vältida programmi lõpetamist.

Näide:

func näide() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Taastumine panic-ist:", r)
        }
    }()

    fmt.Println("Enne panic-i")
    panic("midagi läks valesti")
    fmt.Println("See ei käivitu")
}

Siin põhjustab panic vea, defer koos recover-ga seda haarab ja programm jätkab tööd ilma crashita.