This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

Metadata

ID: go-best-practices/errors-new-errorf

Language: Go

Severity: Info

Category: Best Practices

Description

You should use fmt.Errorf("something %w", foo) instead of errors.New(fmt.Sprintf("something %s", foo)).

Here are a few reasons why:

  1. Error wrapping: By using 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.
  2. Simplicity: The 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.
  3. Consistency: By consistently using 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.

Non-Compliant Code Examples

func myFunc() error {
	foo := "foo"
	return errors.New(fmt.Sprintf("error: %s", foo))
}

Compliant Code Examples

func myFunc() error {
	foo := "foo"
	return fmt.Errorf("error: %w", foo)
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Integraciones sin problemas. Prueba Datadog Code Security