Sobes.tech
Junior — Middle

Кадом усулҳо барои дастгирӣ ва коркарди хатоҳои навъи panic дар барнома истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, механизм recover дар ҳамоҳангӣ бо defer барои фатҳ ва идоракунии хатоҳои навъи panic истифода мешавад. Функсияи recover имкон медиҳад, ки panic-ро дарёфт ва пешгирӣ кунад, ки ба қатъ шудани ногаҳонии барнома роҳ намедиҳад.

Масалан:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Паникаи дарёфтшуда:", r)
        }
    }()

    // Код, ки метавонад panic-ро ба вуҷуд орад
    panic("чизи нодуруст шуд")
}

func main() {
    safeFunction()
    fmt.Println("Барнома идома дорад")
}

Дар ин мисол, defer иҷрои функсияи бе номи, ки recover-ро даъват мекунад, ба таъхир меандозад. Агар дар safeFunction паника рух диҳад, он дарёфт ва идора карда мешавад, ки ба барнома имкон медиҳад, ки идома ёбад.