utils.go 854 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package errors
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. func Errorf(format string, a ...any) WTError {
  7. msg := fmt.Sprintf(format, a...)
  8. code := UnknownError
  9. cause := error(nil)
  10. stack := getStack()
  11. return &wtError{
  12. cause: cause,
  13. msg: msg,
  14. code: code,
  15. stack: stack,
  16. }
  17. }
  18. func Warp(err error, format string, a ...any) WTError {
  19. msg := fmt.Sprintf(format, a...)
  20. code := UnknownError
  21. cause := err
  22. stack := getStack()
  23. return &wtError{
  24. cause: cause,
  25. msg: msg,
  26. code: code,
  27. stack: stack,
  28. }
  29. }
  30. func Is(err error, target error) bool {
  31. var wtErr, wtTarget WTError
  32. if errors.As(err, &wtErr) && errors.As(target, &wtTarget) {
  33. if wtErr.Code() == wtTarget.Code() {
  34. return true
  35. } else if wtErr == wtTarget {
  36. return true
  37. }
  38. }
  39. return errors.Is(err, target)
  40. }
  41. func As(err error, target any) bool {
  42. return errors.As(err, target)
  43. }