Junior — Middle
Kuidas teie rakenduses toimub erandite ja vigade haldamine?
sobes.tech AI
Vastus AI-lt
Go keeles vigade haldamine erineb paljudest teistest keeltest, kuna siin puuduvad tavapärased erandid. Selle asemel tagastavad funktsioonid tavaliselt vea (error) väärtuse teise tulemuse osana.
Peamised lähenemised:
-
Vea kontroll pärast funktsiooni kutsumist:
result, err := someFunction() if err != nil { // vea töötlemine log.Println("Viga:", err) return err } // jätka tulemusega -
Oma vigatüüpide loomine kasutades
errors.Newvõifmt.Errorfinformatiivsemate sõnumite jaoks. -
Paanik (
panic) ja taastumine (recover) kasutatakse harva, peamiselt kriitiliste vigade korral, mis ei tohiks normaalset voogu häirida. -
Vigade logimine ja nende ülespoole tagastamine tsükli keskse töötlemise jaoks.
Näide vea töötlemisest:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("nulliga jagamine")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Viga:", err)
return
}
fmt.Println("Tulemus:", result)
}
Seega, Go keeles käsitletakse vigu selgelt, mis tõstab koodi loetavust ja usaldusväärsust.