Sobes.tech
Senior

Ako riešite chyby v Go v produkčne pripravené aplikácii?

sobes.tech AI

Odpoveď od AI

V Go je spracovanie chýb založené na explicitnej kontrole vracanej hodnoty error po volaní funkcií. V produkčne pripravených aplikáciách je dôležité:

  • Vždy kontrolovať chyby ihneď po volaní funkcie.
  • Používať obalové chyby (fmt.Errorf s %w) na zachovanie kontextu.
  • Logovať chyby s dostatočnými detailmi, vrátane zásobníka volaní, ak je to potrebné.
  • Pre kritické chyby aplikovať stratégiu opakovaných pokusov alebo fallback.
  • V HTTP službách vracať správne kódy stavu a zrozumiteľné správy.

Príklad spracovania chyby s obalovaním a logovaním:

package main

import (
    "errors"
    "fmt"
    "log"
)

func doSomething() error {
    return errors.New("pôvodná chyba")
}

func main() {
    err := doSomething()
    if err != nil {
        wrappedErr := fmt.Errorf("chyba v doSomething: %w", err)
        log.Printf("Došlo k chybe: %v", wrappedErr)
        // Ďalšie spracovanie, napr. vrátenie chyby vyššie
    }
}