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")
}