Sobes.tech
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 аны кармайт жана программа ката кетирбестен ишин улантат.