Inspectopedia
 
2024.3

Type assertion on errors fails on wrapped errors

Info
Reliability
New
Last modified: 03 December 2024

Reports type assertion or type switch on errors, for example, err.(*MyErr) or switch err.(type), and suggests using errors.As instead.

Since Go 1.13, errors can be wrapped using the fmt.Errorf function with the %w verb. Therefore, type assertion or type switch on errors fails on wrapped errors. The preferred way for checking for a specific error type is to use the errors.As function from the standard library as this function traverses the chain of the wrapped errors while checking for a specific error type.

For more information about errors.As, refer to working with Errors in Go 1.13.

The quick-fix replaces type assertion and type switch on errors with a call to errors.As.

Example

After the quick fix is applied: