Junior — Middle
Go программалоо тилинде panic, defer жана recover функцияларынын өз ара аракеттенүү механизмин түшүндүрүңүз.
sobes.tech AI
AIден жооп
Go тилде, panic, defer жана recover функциялары ката жана экстремалдык кырдаалдар менен байланыштуу.
panic— учурдагы функциянын күтүүсүздөн аякталышына себеп болот жана "паника" процесси башталат, ал чакыруулар стегинин жогору жакка таралып, кечиктирилгенdeferфункцияларын чакырат.defer— функциянын иштөөсүн учурдагы функциядан чыгуу менен кечиктирет, булpanicден кийин тазалоо же иштетүү үчүн мүмкүндүк берет.recover— кечиктирилген функциянын ичиндеpanicти "улут" кылууга жана программаны токтотпоого мүмкүндүк берет.
Мисал:
func мисал() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паникадан калыбына келтирилди:", r)
}
}()
fmt.Println("Паникага чейин")
panic("эч нерсе туура эмес болду")
fmt.Println("Бул ишке ашпайт")
}
Бул жерде, panic ката пайда кылат, defer менен recover аны кармайт жана программа ката кетирбестен ишин улантат.