Sobes.tech
Junior — Middle

გთხოვთ, ახსენით panic, defer და recover ფუნქციების ურთიერთქმედების მექანიზმი პროგრამირების ენაში Go.

sobes.tech AI

პასუხი AI-სგან

Go ენის ფარგლებში, ფუნქციები panic, defer და recover დაკავშირებულია შეცდომების მართვასა და განსაკუთრებულ სიტუაციებთან.

  • panic — იწვევს მიმდინარე ფუნქციის მოულოდნელ დასრულებას და იწყებს "პანიკის" პროცესს, რომელიც გავრცელდება ზარის სტეკის მეშვეობით და იძახის გადადებულ defer ფუნქციებს.
  • defer — გადადებს ფუნქციის შესრულებას მიმდინარე ფუნქციის დატოვებამდე, რაც საშუალებას აძლევს სუფთავებას ან დამუშავებას panic-ის შემდეგ.
  • recover — საშუალებას აძლევს "დაჭერას" panic-ის შიგნით გადადებულ ფუნქციაში და თავიდან აიცილოს პროგრამის დასრულება.

მაგალითი:

func მაგალითი() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("განკურნება პანიკიდან:", r)
        }
    }()

    fmt.Println("პანიკის წინ")
    panic("რაღაცა მოხდა ცუდად")
    fmt.Println("ეს არ შესრულდება")
}

აქ, panic იწვევს შეცდომას, defer და recover მას იჭერს და პროგრამა აგრძელებს მუშაობას გაუქმების გარეშე.