Sobes.tech
Junior — Middle

Ներկայացրեք panic, defer և recover ֆունկցիաների փոխազդեցության մեխանիզմը Go ծրագրավորման լեզվում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, panic, defer և recover գործառույթները կապված են սխալների և արտակարգ իրավիճակների հետ:

  • panic — հանգեցնում է ընթացիկ ֆունկցիայի հանկարծակի ավարտի և սկսում է "պանիկ" գործընթացը, որը տարածվում է կանչերի բլոկով և կանչում է հետաձգված defer ֆունկցիաները:
  • defer — հետաձգում է ֆունկցիայի կատարմանը մինչև ընթացիկ ֆունկցիայի դուրս գալը, ինչը թույլ է տալիս կատարել մաքրման կամ մշակման աշխատանքներ panic-ից հետո:
  • recover — թույլ է տալիս "ապաստաղել" panic-ը ներսում հետաձգված ֆունկցիայում և կանխել ծրագրի ավարտը:

Օրինակ:

func օրինակ() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Վերականգնվել է panic-ից:", r)
        }
    }()

    fmt.Println("Նախքան panic")
    panic("ինչ-որ բան սխալ է եղել")
    fmt.Println("Այս մասը չի գործարկվի")
}

Այստեղ, panic առաջացնում է սխալ, defer-ը հետաձգում է այն recover-ով և ծրագիրը շարունակում է աշխատել առանց կոտրվելու։