// Плохо - создаём информационный шум
func getConfig() (*Config, error) {
data, err := os.ReadFile("config.json")
if err != nil {
return nil, fmt.Errorf("failed to read config: %w", err) // лишняя обёртка
}
// ...
}
// Хорошо - передаём как есть
func getConfig() (*Config, error) {
data, err := os.ReadFile("config.json")
if err != nil {
return nil, err // передаём оригинальную ошибку
}
// ...
}
Я часто видел что так делают, но не понимаю почему - мне кажется что это наоборот неудобно т.к. потом по сообщению ошибки фиг определишь что произошло, особенно если трейс не приложен. Вот прилетит "failed to start service: EOF" и поди разберись.
Скрытый текст
Я часто видел что так делают, но не понимаю почему - мне кажется что это наоборот неудобно т.к. потом по сообщению ошибки фиг определишь что произошло, особенно если трейс не приложен.
Вот прилетит
"failed to start service: EOF"и поди разберись.Или может быть я не верно истолковал мысль?
И
fmt.Errorf("could not read config: %w", err)вместоerrors.Wrap(err, "could not read config")Ну или развал начался из-за накопившихся проблем