Junior — Middle
Wyjaśnij mechanizm interakcji funkcji panic, defer i recover w języku programowania Go.
sobes.tech AI
Odpowiedź od AI
W Go funkcje panic, defer i recover są związane z obsługą błędów i sytuacji wyjątkowych.
panic— powoduje nagłe zakończenie bieżącej funkcji i uruchamia proces "paniki", który rozprzestrzenia się wzdłuż stosu wywołań, wywołując opóźnione funkcjedefer.defer— opóźnia wykonanie funkcji do momentu opuszczenia bieżącej funkcji, umożliwiając wykonanie sprzątania lub przetwarzania popanic.recover— pozwala "złapać" panic wewnątrz opóźnionej funkcji i zapobiec zakończeniu działania programu.
Przykład:
func przykład() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Odzyskano z panic:", r)
}
}()
fmt.Println("Przed panic")
panic("coś poszło nie tak")
fmt.Println("To się nie wykona")
}
Tutaj panic wywołuje błąd, defer z recover go przechwytuje, a program kontynuuje działanie bez awarii.