You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

transaction_exception.go 1.3 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package exception
  2. import (
  3. "errors"
  4. "github.com/opentrx/seata-golang/v2/pkg/apis"
  5. )
  6. // TransactionException
  7. type TransactionException struct {
  8. Code apis.ExceptionCode
  9. Message string
  10. Err error
  11. }
  12. // Error
  13. func (e *TransactionException) Error() string {
  14. return "TransactionException: " + e.Message
  15. }
  16. // Unwrap
  17. func (e *TransactionException) Unwrap() error { return e.Err }
  18. // TransactionExceptionOption for edit TransactionException
  19. type TransactionExceptionOption func(exception *TransactionException)
  20. // WithExceptionCode edit exception code in TransactionException
  21. func WithExceptionCode(code apis.ExceptionCode) TransactionExceptionOption {
  22. return func(exception *TransactionException) {
  23. exception.Code = code
  24. }
  25. }
  26. // WithMessage edit message in TransactionException
  27. func WithMessage(message string) TransactionExceptionOption {
  28. return func(exception *TransactionException) {
  29. exception.Message = message
  30. }
  31. }
  32. // NewTransactionException return a pointer to TransactionException
  33. func NewTransactionException(err error, opts ...TransactionExceptionOption) *TransactionException {
  34. var ex *TransactionException
  35. if errors.As(err, &ex) {
  36. return ex
  37. }
  38. ex = &TransactionException{
  39. Code: apis.UnknownErr,
  40. Message: err.Error(),
  41. Err: err,
  42. }
  43. for _, o := range opts {
  44. o(ex)
  45. }
  46. return ex
  47. }