Sobes.tech
Junior — Middle

Kā jūsu lietojumprogrammā tiek pārvaldītas izņēmumi un kļūdas?

sobes.tech AI

Atbilde no AI

Go valodā kļūdu pārvaldība atšķiras no daudzām citām valodām, jo šeit nav ierastās izņēmumu sistēmas. Tā vietā funkcijas parasti atgriež kļūdas vērtību (error) kā otru rezultātu.

Galvenie pieejas veidi:

  • Kļūdas pārbaude pēc funkcijas izsaukšanas:

    result, err := someFunction()
    if err != nil {
        // kļūdas apstrāde
        log.Println("Kļūda:", err)
        return err
    }
    // turpināt ar result
    
  • Pašu kļūdu tipu izveide ar errors.New vai fmt.Errorf informatīvāku ziņojumu nodrošināšanai.

  • Panikas (panic) un atkopšanās (recover) reti tiek izmantotas, galvenokārt kritisku kļūdu gadījumā, kas nedrīkst notikt normālā plūsmā.

  • Kļūdu reģistrēšana un to nodošana augšup pa steku centralizētai apstrādei.

Kļūdu apstrādes piemērs:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("dalīšana ar nulli")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Kļūda:", err)
        return
    }
    fmt.Println("Rezultāts:", result)
}

Tādējādi, Go valodā kļūdas tiek skaidri pārvaldītas, kas uzlabo koda lasāmību un uzticamību.