Junior — Middle
Ar žinote, kas yra išimtys (Exception) Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje nėra tradicinių išimčių (Exception), kaip Java ar Python. Vietoje to, Go naudoja grąžinamas reikšmes klaidų tvarkymui: funkcija grąžina klaidos reikšmę (error), kurią reikia patikrinti.
Tačiau Go turi panikos (panic) ir atsigavimo (recover) mechanizmą, kuris gali būti laikomas analogišku išimčių, tačiau jis skirtas kritinėms klaidoms ir neturėtų būti naudojamas įprastam klaidų tvarkymui.
Klaidos tvarkymo pavyzdys Go:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("dalyba iš nulio")
}
return a / b, nil
}
rezultatas, err := divide(10, 0)
if err != nil {
fmt.Println("Klaida:", err)
} else {
fmt.Println("Rezultatas:", rezultatas)
}
Panikos/atgavimo naudojimas:
func mayPanic() {
panic("kažkas nepavyko")
}
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Atgauta po panikos:", r)
}
}()
mayPanic()
fmt.Println("Šis kodas nebus vykdomas")
}