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 системаны күтүүсүз катага туруштук берүүчү кылууга жардам берет жана күтүүсүздөн токтоп калууну алдын алат.