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("Барқароршавӣ пас аз panic:", r)
        }
    }()
    return a / b // агар b == 0, panic мешавад
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Барқароршавӣ пас аз panic: runtime error: integer divide by zero
}

Ин роҳ, recover кӯмак мекунад, ки системаи муқовимат ба хатоҳои ғайр интизорро беҳтар созад ва аз қатъ шудани ногаҳонӣ пешгирӣ кунад.