Sobes.tech
Middle

Ի՞նչ կլինի, եթե սկսեք goroutine և ներսում call panic: Գորուտին կդադարե՞ կամ ամբողջ ծրագիրը:

sobes.tech AI

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

Եթե գորուտինում տեղի ունենա panic, ապա այդ կոնկրետ գորուտինը կդադարեցվի, բայց ամբողջ ծրագիրը ընդհանուր առմամբ ավտոմատ կերպով չի փակվի: Պանիկա գորուտինում չի հանգեցնում բոլոր գորուտինների կամ ծրագրի կանգնեցմանը, եթե միայն այն չհասնի արմատային մակարդակ և չմշակվի:

Որպեսզի կանխել ծրագրի անսպասելի փակումը, կարող եք օգտագործել recover նույն գորուտինում կամ կանչող ֆունկցիայում, որպեսզի բռնեք և մշակեք պանիկան:

Օրինակ՝

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Գորուտինում բռնված պանիկա:", r)
        }
    }()
    panic("ինչ-որ բան սխալ է գնացել")
}()

Այս օրինակով, պանիկան չի հանգեցնի ամբողջ ծրագրի կանգնեցմանը, այն կառավարվի գորուտինում։