utils.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 := getErrorName(err)
  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 WarpQuick(err error) WTError {
  31. msg := "error"
  32. code := getErrorName(err)
  33. cause := err
  34. stack := getStack()
  35. return &wtError{
  36. cause: cause,
  37. msg: msg,
  38. code: code,
  39. stack: stack,
  40. }
  41. }
  42. func Is(err error, target error) bool {
  43. var wtErr, wtTarget WTError
  44. if errors.As(err, &wtErr) && errors.As(target, &wtTarget) {
  45. if wtErr.Code() == wtTarget.Code() {
  46. return true
  47. } else if wtErr == wtTarget {
  48. return true
  49. }
  50. }
  51. return errors.Is(err, target)
  52. }
  53. func As(err error, target any) bool {
  54. return errors.As(err, target)
  55. }