Sobes.tech
Senior

Чӣ гуна хатогиҳоро дар Go дар барномаи омодаи истеҳсолот идора мекунед?

sobes.tech AI

Ҷавоб аз AI

В Go, обработката на грешки се базира на явна проверка на връщаната стойност error след извикване на функции. В приложения, готови за продукция, е важно:

  • Винаги да проверявате грешките веднага след извикването на функция.
  • Да използвате обвивки на грешки (fmt.Errorf с %w) за запазване на контекста.
  • Да логвате грешките с достатъчно детайли, включително стек на извикванията, ако е необходимо.
  • За критични грешки да прилагате стратегия за повторни опити или fallback.
  • В HTTP услуги да връщате коректни кодове за статус и разбираеми съобщения.

Пример за обработка на грешка с обвиване и логване:

package main

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

func doSomething() error {
    return errors.New("основна грешка")
}

func main() {
    err := doSomething()
    if err != nil {
        wrappedErr := fmt.Errorf("грешка в doSomething: %w", err)
        log.Printf("Настъпи грешка: %v", wrappedErr)
        // Допълнителна обработка, например връщане на грешката нагоре
    }
}