Sobes.tech
Junior — Middle

Milliseid tagajärgi tuleks oodata, kui gorutinas tekib paanika?

sobes.tech AI

Vastus AI-lt

Kui gorutinas tekib panic (panic), siis selle gorutina täitmine katkeb ning algab stack unwinding protsess, mille käigus kutsutakse defer-iga märgitud funktsioonid.

Kui panic ei ole käsitsetud (näiteks recover abil defer-s), viib see kogu programmi lõpetamiseni.

Oluline on mõista, et ühe gorutina panic ei mõjuta otseselt teisi gorutinasid — need jätkavad tööd, välja arvatud juhul, kui panic põhjustab kogu programmi peatamise.

Panikahaldusnäide:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panik tabatud ja käsitsetud:", r)
        }
    }()
    panic("midagi läks valesti")
}()