Sobes.tech
Junior — Middle

Czy wiesz, czym są wyjątki (Exception) w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go nie ma tradycyjnych wyjątków (Exception), jak w Java czy Python. Zamiast tego Go używa wartości zwracanych do obsługi błędów: funkcja zwraca wartość błędu (error), którą należy sprawdzić.

Jednak w Go istnieje mechanizm paniki (panic) i odzyskiwania (recover), który można uznać za odpowiednik wyjątków, ale jest przeznaczony do krytycznych błędów i nie powinien być używany do zwykłej obsługi błędów.

Przykład obsługi błędu w Go:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("dzielenie przez zero")
    }
    return a / b, nil
}

wynik, err := divide(10, 0)
if err != nil {
    fmt.Println("Błąd:", err)
} else {
    fmt.Println("Wynik:", wynik)
}

Użycie panic/recover:

func mayPanic() {
    panic("coś poszło nie tak")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Odzyskano po panice:", r)
        }
    }()
    mayPanic()
    fmt.Println("Ten kod się nie wykona")
}