errors.go 470 B

12345678910111213141516171819202122232425262728293031
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. var (
  7. ErrValidation = errors.New("validation failed")
  8. )
  9. type stepErr struct {
  10. step string
  11. msg string
  12. cause error
  13. }
  14. func (s *stepErr) Error() string {
  15. return fmt.Sprintf("Step: %q: %s: Cause: %v", s.step, s.msg, s.cause)
  16. }
  17. func (s *stepErr) Is(target error) bool {
  18. var t *stepErr
  19. if ok := errors.As(target, &t); !ok {
  20. return false
  21. }
  22. return t.step == s.step
  23. }
  24. func (s *stepErr) Unwrap() error {
  25. return s.cause
  26. }