Sobes.tech
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.