Junior — Middle
Millised eranditüübid või vead võivad Go keeles olla töödeldud?
sobes.tech AI
Vastus AI-lt
Go keeles ei ole traditsioonilist erandite süsteemi nagu teistes keeltes. Selle asemel käsitletakse vigu, kasutades error tüüpi tagastatavaid väärtusi.
Go-s vigade käsitlemise peamised viisid:
- Viga tagastada funktsioonist: funktsioon tagastab väärtuse ja vea, mida tuleb kontrollida.
- Panic (
panic) ja taastumine (recover): kasutatakse kriitiliste vigade käsitlemiseks, mis tavaliselt põhjustavad programmi lõpetamise, kuid neid saab kinni püüda.
Vigade käsitlemise näide:
func readFile(filename string) ([]byte, error) {
data, err := os.ReadFile(filename)
if err != nil {
return nil, err
}
return data, nil
}
func main() {
data, err := readFile("file.txt")
if err != nil {
fmt.Println("Viga faili lugemisel:", err)
return
}
fmt.Println(string(data))
}
Seega, Go-s käsitletakse funktsioonide tagastatud vigu, mitte klassikalisi erandeid.