batcherror.go 591 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package errorx
  2. import "bytes"
  3. type (
  4. BatchError struct {
  5. errs errorArray
  6. }
  7. errorArray []error
  8. )
  9. func (be *BatchError) Add(err error) {
  10. if err != nil {
  11. be.errs = append(be.errs, err)
  12. }
  13. }
  14. func (be *BatchError) Err() error {
  15. switch len(be.errs) {
  16. case 0:
  17. return nil
  18. case 1:
  19. return be.errs[0]
  20. default:
  21. return be.errs
  22. }
  23. }
  24. func (be *BatchError) NotNil() bool {
  25. return len(be.errs) > 0
  26. }
  27. func (ea errorArray) Error() string {
  28. var buf bytes.Buffer
  29. for i := range ea {
  30. if i > 0 {
  31. buf.WriteByte('\n')
  32. }
  33. buf.WriteString(ea[i].Error())
  34. }
  35. return buf.String()
  36. }