def_err_let.go 1.1 KB

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