Sobes.tech
Junior — Middle

Izskaidrojiet funkciju panic, defer un recover savstarpējās mijiedarbības mehānismu Go programmēšanas valodā.

sobes.tech AI

Atbilde no AI

Go valodā funkcijas panic, defer un recover ir saistītas ar kļūdu apstrādi un izņēmuma situācijām.

  • panic — izraisa pašreizējās funkcijas strauju beigas un sāk "panikas" procesu, kas izplatās pa izsaukumu steku un izsauc atliktās defer funkcijas.
  • defer — atlikt funkcijas izpildi līdz pašreizējās funkcijas iziešanai, ļaujot veikt tīrīšanu vai apstrādi pēc panic.
  • recover — ļauj "noķert" panic iekšā atliktā funkcijā un novērst programmas noslīkšanu.

Piemērs:

func piemērs() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Atkopts no panikas:", r)
        }
    }()

    fmt.Println("Pirms panikas")
    panic("kaut kas nogāja greizi")
    fmt.Println("Šis netiks izpildīts")
}

Šeit, panic izraisa kļūdu, defer ar recover to noķer, un programma turpina darbu bez avārijas.