Sobes.tech
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 funkcje defer.
  • defer — opóźnia wykonanie funkcji do momentu opuszczenia bieżącej funkcji, umożliwiając wykonanie sprzątania lub przetwarzania po panic.
  • 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.