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 viivitusegadeferfunktsioonid.defer— lükkab funktsiooni täitmise edasi kuni praegusest funktsioonist väljumiseni, võimaldades teha puhastust või töötlemist pärastpanic-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.