- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
",t};e.buildCustomizationMenuUi=t;function n(e){let t='
",t}function s(e){let n=e.filter.currentValue||e.filter.defaultValue,t='${e.filter.label}
`,e.filter.options.forEach(s=>{let o=s.id===n;t+=``}),t+="${e.filter.label}
`,t+=`ID: go-best-practices/errors-new-errorf
Language: Go
Severity: Info
Category: Best Practices
You should use fmt.Errorf("something %w", foo)
instead of errors.New(fmt.Sprintf("something %s", foo))
.
Here are a few reasons why:
fmt.Errorf
with the %w
format specifier instead of %s
, your new error object wraps the original error. This makes it possible to access the original error object using errors.Is
and errors.As
.fmt.Errorf
function simplifies the error message creation by combining the formatting and error wrapping in one function call. In contrast, using errors.New(fmt.Sprintf("something %s", foo))
requires an extra step of formatting the string separately before creating the error.fmt.Errorf
, developers maintain a uniform approach to error handling and can easily recognize and handle errors throughout the codebase. Using a single idiomatic method rather than mixing different styles ensures consistency and improves code readability and maintainability.func myFunc() error {
foo := "foo"
return errors.New(fmt.Sprintf("error: %s", foo))
}
func myFunc() error {
foo := "foo"
return fmt.Errorf("error: %w", foo)
}