Sobes.tech
Junior — Middle

Goда defer чакыруунун ичинде паникаларды кармап жана иштетүү мүмкүнбү?

sobes.tech AI

AIден жооп

Go тилинде, defer колдонуп паникаларды башкарса болот, бирок defer чакырыгы өзү паникага туш келбейт; паника recover() аркылуу defer менен кечиктирилген функциянын ичинде кармалышы керек.

Мисал:

func safeCall() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Паника кармалды жана иштетилди:", r)
        }
    }()
    panic("эч нерсе туура эмес болду")
}

Бул жерде, recover() defer менен кечиктирилген функциянын ичинде чакырылат жана safeCall ичинде пайда болгон паниканы кармап алууга мүмкүндүк берет. Ошондуктан, паника defer түздөн-түз кармалбайт, бирок аны recover() аркылуу иштетүүгө болот.