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 кӯмак мекунад, ки системаи муқовимат ба хатоҳои ғайр интизорро беҳтар созад ва аз қатъ шудани ногаҳонӣ пешгирӣ кунад.