def_err.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // package def_err -- базовый тип ошибки
  2. package def_err
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_txt"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  8. )
  9. // KErr -- обёрнутая ошибка.
  10. type KErr struct {
  11. def_spec.ITxtFix
  12. }
  13. // Err -- создать новую обёрнутую ошибку.
  14. func Err(msg def_spec.ATxt, arg ...any) *KErr {
  15. helpers.Hassert(msg == "", "Err(): msg is empty")
  16. _msg := fmt.Sprintf(string(msg), arg...)
  17. sf := &KErr{
  18. ITxtFix: def_txt.Txt(_msg),
  19. }
  20. _ = def_spec.IErr(sf)
  21. return sf
  22. }
  23. // WrapErr -- возвращает обёрнутую ошибку.
  24. func WrapErr(err error) def_spec.IErr {
  25. _msg := def_txt.TxtFix(err.Error())
  26. sf := &KErr{
  27. ITxtFix: _msg,
  28. }
  29. return sf
  30. }
  31. // IsErr -- возвращает true, если ошибка.
  32. func (sf *KErr) IsErr() bool {
  33. return sf.Get() != ""
  34. }
  35. // Error -- возвращает хранимую ошибку.
  36. func (sf *KErr) Error() string {
  37. return sf.String()
  38. }