error.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package base
  2. import (
  3. "fmt"
  4. "github.com/pkg/errors"
  5. )
  6. // Error for opt
  7. type Error struct {
  8. ErrorCode int
  9. ErrorMsg string
  10. ErrorUserMsg string
  11. }
  12. // NewError one
  13. func NewError(code int, message string, userMessage string) Error {
  14. return Error{
  15. ErrorCode: code,
  16. ErrorMsg: message,
  17. ErrorUserMsg: userMessage,
  18. }
  19. }
  20. func (err Error) Error() string {
  21. return err.ErrorMsg
  22. }
  23. // WrapPrint print Error & User like
  24. // Error {
  25. // ErrorCode: 400,
  26. // ErrorMsg: "something wrong with: %v",
  27. // ErrorUserMsg: "UI Error Tips: %v",
  28. // }
  29. //
  30. // Error {
  31. // ErrorCode: 400,
  32. // ErrorMsg: "something wrong with: %v",
  33. // ErrorUserMsg: "UI Error Tips",
  34. // }
  35. func (err Error) WrapPrint(core error, message string, user ...interface{}) error {
  36. if core == nil {
  37. return nil
  38. }
  39. ret := err
  40. SetErrPrintfMsg(&ret, core)
  41. if len(user) > 0 {
  42. SetErrPrintfUserMsg(&ret, user...)
  43. }
  44. return errors.Wrap(ret, message)
  45. }
  46. // Wrap Error like
  47. // Error {
  48. // ErrorCode: 400,
  49. // ErrorMsg: "action error",
  50. // ErrorUserMsg: "UI Error Tips",
  51. // }
  52. func (err Error) Wrap(core error) error {
  53. if core == nil {
  54. return nil
  55. }
  56. msg := err.ErrorMsg
  57. err.ErrorMsg = core.Error()
  58. return errors.Wrap(err, msg)
  59. }
  60. // SetErrPrintfMsg for API
  61. func SetErrPrintfMsg(err *Error, v ...interface{}) {
  62. err.ErrorMsg = fmt.Sprintf(err.ErrorMsg, v...)
  63. }
  64. // SetErrPrintfUserMsg for API
  65. func SetErrPrintfUserMsg(err *Error, v ...interface{}) {
  66. err.ErrorUserMsg = fmt.Sprintf(err.ErrorUserMsg, v...)
  67. }
  68. // value list
  69. var (
  70. MQTTPubError = Error{100002, "mqtt pub msg error", ""}
  71. NsqStatisPubError = Error{100003, "nsq pub statis, it only must is Statis", ""}
  72. HttpRetCodeError = Error{100004, "http response retcode err", "http response retcode err"}
  73. )