Error Wrapping and Inspection
Errors Is
errors.Is checks whether a wrapped error chain contains a specific sentinel.
Errors Is
errors_is.go
package main
import (
"errors"
"fmt"
)
var ErrMissing = errors.New("missing record")
func lookup(key string) error {
if key == "missing" {
return fmt.Errorf("lookup %s: %w", key, ErrMissing)
}
return nil
}
func main() {
var key =
err := lookup(key)
errText := "none"
if err != nil {
errText = err.Error()
}
isMissing := errors.Is(err, ErrMissing)
fmt.Println("key=", key)
fmt.Println("err=", errText)
fmt.Println("is_missing=", isMissing)
}
package main
import (
"errors"
"fmt"
)
var ErrMissing = errors.New("missing record")
func lookup(key string) error {
if key == "missing" {
return fmt.Errorf("lookup %s: %w", key, ErrMissing)
}
return nil
}
func main() {
var key =
err := lookup(key)
errText := "none"
if err != nil {
errText = err.Error()
}
isMissing := errors.Is(err, ErrMissing)
fmt.Println("key=", key)
fmt.Println("err=", errText)
fmt.Println("is_missing=", isMissing)
}
errors is
Use `errors.Is` when callers need to ask whether a known error occurred under extra context.