def_err_let.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // package def_err -- обёрнутая ошибка
  2. package def_err
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_fn"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_txt"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
  9. )
  10. // LErr -- обёрнутая ошибка.
  11. type LErr struct {
  12. *def_txt.LTxt
  13. }
  14. // LetErr -- создать новую обёрнутую ошибку.
  15. func LetErr[T def_spec_fn.TxtConstraint](owner *owner.LOwner,
  16. msg T, arg ...any) *LErr {
  17. helpers.If(msg == "").Hassert("LetErr(): msg is empty")
  18. sf := &LErr{
  19. LTxt: def_txt.LetTxt(owner, msg, arg...),
  20. }
  21. return sf
  22. }
  23. // WrapTxt -- возвращает обёрнутую ошибку.
  24. func (sf *LErr) WrapTxt[T def_spec_base.TxtConstraint](owner *owner.LOwner, err T, arg ...any) *LErr {
  25. sf.CheckOwner()
  26. _sf := &LErr{
  27. LTxt: def_txt.LetTxt(owner, sf.Error()+"\n\t"+string(err), arg...),
  28. }
  29. return _sf
  30. }
  31. // WrapErr -- возвращает обёрнутую ошибку.
  32. func (sf *LErr) WrapErr(owner *owner.LOwner, err error, arg ...any) *LErr {
  33. sf.CheckOwner()
  34. _sf := &LErr{
  35. LTxt: def_txt.LetTxt(owner, sf.Error()+"\n\t"+err.Error(), arg...),
  36. }
  37. return _sf
  38. }
  39. // IsErr -- возвращает true, если ошибка.
  40. func (sf *LErr) IsErr() def_spec_base.Bool {
  41. return sf.Get() != ""
  42. }
  43. // Error -- возвращает хранимую ошибку.
  44. func (sf *LErr) Error() string {
  45. sf.CheckOwner()
  46. return sf.String()
  47. }