Middle
Kas notiks, ja palaidīsiet goroutine un tajā izsauksiet panic? Vai goroutine apstāsies vai visa programma?
sobes.tech AI
Atbilde no AI
Ja notiek panic gorutīnā, šī konkrētā gorutīna apstāsies, bet visa programma kopumā netiks automātiski slēgta. Panika gorutīnā neizraisa visu gorutīnu vai programmas apturēšanu, ja vien tā neizsniegs saknes līmeni un paliks neapstrādāta.
Lai izvairītos no negaidīta programmas slēgšanas, var izmantot recover tajā pašā gorutīnā vai izsaucamajā funkcijā, lai noķertu un apstrādātu paniku.
Piemērs:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Gorutīnā noķerta panika:", r)
}
}()
panic("kaut kas nogāja greizi")
}()
Šajā piemērā panika nesasniegs visas programmas apturēšanu, bet tiks apstrādāta iekšā gorutīnā.