Junior — Middle
Kaip jūsų programoje vykdomas išimčių ir klaidų valdymas?
sobes.tech AI
Atsakymas iš AI
Go kalboje klaidų valdymas skiriasi nuo daugelio kitų kalbų, nes čia nėra įprastų išimčių. Vietoj to, funkcijos dažnai grąžina klaidos reikšmę (error) kaip antrą rezultatą.
Pagrindiniai požiūriai:
-
Klaidos patikrinimas po funkcijos iškvietimo:
result, err := someFunction() if err != nil { // klaidos apdorojimas log.Println("Klaida:", err) return err } // tęsti su result -
Savo klaidų tipų kūrimas naudojant
errors.Newarbafmt.Errorfinformatyvesniems pranešimams. -
Panikos (
panic) ir atsigavimas (recover) retai naudojami, daugiausia kritinėms klaidoms, kurios neturėtų įvykti įprastame sraute. -
Klaidų registravimas ir jų grąžinimas aukštyn steko, kad būtų galima centralizuotai apdoroti.
Klaidų apdorojimo pavyzdys:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("dalyba iš nulio")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Klaida:", err)
return
}
fmt.Println("Rezultatas:", result)
}
Taip, Go kalboje klaidos yra aiškiai valdomos, kas didina kodo skaitomumą ir patikimumą.