Middle
Ի՞նչ կլինի, եթե սկսեք goroutine և ներսում call panic: Գորուտին կդադարե՞ կամ ամբողջ ծրագիրը:
sobes.tech AI
Պատասխան AI-ից
Եթե գորուտինում տեղի ունենա panic, ապա այդ կոնկրետ գորուտինը կդադարեցվի, բայց ամբողջ ծրագիրը ընդհանուր առմամբ ավտոմատ կերպով չի փակվի: Պանիկա գորուտինում չի հանգեցնում բոլոր գորուտինների կամ ծրագրի կանգնեցմանը, եթե միայն այն չհասնի արմատային մակարդակ և չմշակվի:
Որպեսզի կանխել ծրագրի անսպասելի փակումը, կարող եք օգտագործել recover նույն գորուտինում կամ կանչող ֆունկցիայում, որպեսզի բռնեք և մշակեք պանիկան:
Օրինակ՝
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Գորուտինում բռնված պանիկա:", r)
}
}()
panic("ինչ-որ բան սխալ է գնացել")
}()
Այս օրինակով, պանիկան չի հանգեցնի ամբողջ ծրագրի կանգնեցմանը, այն կառավարվի գորուտինում։