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-ով և ծրագիրը շարունակում է աշխատել առանց կոտրվելու։