Sobes.tech
Middle — Middle+

Recover колдонуу контекстинде системаны калыбына келтирүү механизмин түшүндүрүңүз.

sobes.tech AI

AIден жооп

Go тилинде, recover механизми panic учурларын кармоо жана программанын нормалдуу иштешин калыбына келтирүү үчүн колдонулат. Бул системага каталардан кийин күтүүсүздөн токтоп калбоого, катады иштетүүгө жана иштөөдө улантууга мүмкүндүк берет.

Негизги идея:

  • panic пайда болгондо, функциялардын иштөөсү үзгүлтүккө учурап, стек "ачылуу" башталат.
  • Эгер чакырылган функцияларда defer менен чакырылган жана recover() чакырган чакыруу болсо, ал panic-ты кармайт жана ката маанисин кайтарат.
  • Андан соң программа катады иштетип, иштөөдө уланта алат.

Мисал:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Паникадан кийин калыбына келтирүү:", r)
        }
    }()
    return a / b // эгер b == 0 болсо, паника пайда болот
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Паникадан кийин калыбына келтирүү: runtime error: integer divide by zero
}

Ушул жол менен, recover системаны күтүүсүз катага туруштук берүүчү кылууга жардам берет жана күтүүсүздөн токтоп калууну алдын алат.