Sobes.tech
Junior — Middle

Jak je ve vaší aplikaci spravováno výjimky a chyby?

sobes.tech AI

Odpověď od AI

V jazyce Go se správa chyb liší od mnoha jiných jazyků, protože zde neexistují výjimky v obvyklém smyslu. Místo toho funkce obvykle vracejí hodnotu chyby (error) jako druhý výsledek.

Hlavní přístupy:

  • Kontrola chyby po volání funkce:

    result, err := someFunction()
    if err != nil {
        // zpracování chyby
        log.Println("Chyba:", err)
        return err
    }
    // pokračování s result
    
  • Vytváření vlastních typů chyb pomocí errors.New nebo fmt.Errorf pro informativnější zprávy.

  • Paniky (panic) a obnova (recover) se používají zřídka, hlavně pro kritické chyby, které by se neměly stát v normálním toku.

  • Logování chyb a jejich vracení nahoru na zásobník pro centralizované zpracování.

Příklad zpracování chyby:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("dělení nulou")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Chyba:", err)
        return
    }
    fmt.Println("Výsledek:", result)
}

Tímto způsobem jsou chyby v Go explicitně zpracovávány, což zvyšuje čitelnost a spolehlivost kódu.