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)
// Допълнителна обработка, например връщане на грешката нагоре
}
}