Documentation ¶
Overview ¶
Package errors кастомная реализация управления жизненным циклом ошибки. Кроме стандартных свойств и методов реализовано логгирование, HTTP и GRCP статусы, перевод сообщения. Ошибка включает в себя свойства: сообщение, тип, операция, контест.
Index ¶
- Constants
- Variables
- func As(err error, target interface{}) bool
- func Caller(skip CallDepth) func() string
- func Combine(errors ...error) error
- func CombineWithLog(errs ...error) error
- func Contains(err error, fn func(error) bool) bool
- func ContainsByErr(err error, target error) bool
- func ContainsByID(err error, id string) bool
- func DefaultTranslate(e error) string
- func Find(err error, fn func(error) bool) error
- func FindByErr(err error, target error) error
- func FindByID(err error, id string) error
- func GRPCStatusCode(err error) (codes.Code, bool)
- func GRPCStatusCodeMessage(err error) (codes.Code, string, bool)
- func GetID(err error) string
- func GetOperation(err error) string
- func HTTPStatusCode(err error) (int, bool)
- func HTTPStatusCodeMessage(err error) (int, string, bool)
- func Is(err, target error) bool
- func Log(err error, lg ...Logger)
- func StatusMessage(err error) (string, bool)
- func Translate(e error, l Localizer, tctx *TranslateContext) (string, error)
- func Unwrap(err error) error
- func Wrap(left error, right error) error
- func WrapWithLog(olderr error, err error) error
- type CallDepth
- type CtxKV
- type Error
- func Cast(err error) (*Error, bool)
- func DownstreamDependencyTimedoutErr(s string) *Error
- func DownstreamDependencyTimedoutErrWith(ops ...Options) *Error
- func DuplicateErr(s string) *Error
- func DuplicateErrWith(ops ...Options) *Error
- func EmptyErr(s string) *Error
- func EmptyErrWith(ops ...Options) *Error
- func InputBodyErr(s string) *Error
- func InputBodyErrWith(ops ...Options) *Error
- func IternalErr(s string) *Error
- func IternalErrWith(ops ...Options) *Error
- func MaximumAttemptsErr(s string) *Error
- func MaximumAttemptsErrWith(ops ...Options) *Error
- func New(i interface{}) *Error
- func NewLog(i interface{}) *Error
- func NewWith(ops ...Options) *Error
- func NewWithLog(ops ...Options) *Error
- func NotFoundErr(s string) *Error
- func NotFoundErrWith(ops ...Options) *Error
- func SubscriptionExpiredErr(s string) *Error
- func SubscriptionExpiredErrWith(ops ...Options) *Error
- func UnauthenticatedErr(s string) *Error
- func UnauthenticatedErrWith(ops ...Options) *Error
- func UnauthorizedErr(s string) *Error
- func UnauthorizedErrWith(ops ...Options) *Error
- func UnavailableErr(s string) *Error
- func UnavailableErrWith(ops ...Options) *Error
- func ValidationErr(s string) *Error
- func ValidationErrWith(ops ...Options) *Error
- func (e *Error) As(target interface{}) bool
- func (e *Error) ContextInfo() CtxKV
- func (e *Error) Error() string
- func (e *Error) ErrorType() IErrType
- func (e *Error) Format(s fmt.State, verb rune)
- func (e *Error) ID() string
- func (e *Error) Is(target error) bool
- func (e *Error) Log(l ...Logger)
- func (e *Error) Marshal(fn ...Marshaller) ([]byte, error)
- func (e *Error) Msg() string
- func (e *Error) Operation() string
- func (e *Error) Sdump() string
- func (e *Error) Unwrap() error
- func (e *Error) WithOptions(ops ...Options) *Error
- type IErrType
- type Localizer
- type Logger
- type MarshalJSON
- type MarshalString
- type Marshaller
- type Multierror
- type Options
- type TranslateContext
Examples ¶
Constants ¶
const ( // Неизвестный тип ошибки. Дефолтное значение. Unknown errType // Internal внутренняя системная ошибка. Например, отказ базы данных. Internal // Validation ошибка валидации. Например, не корректный email-адрес. Validation // InputBody ошибка обработки входных данных. Например, ошибка сериализации JSON. InputBody // Duplicate дубликат данных, нарушения уникальности. Duplicate // Unauthenticated для выполнения запроса требуется аутентфиикация. Unauthenticated Unauthorized // Empty запрос или не ответ не должен быть пустым. Empty // NotFound запрашиваемые данные не найдены. Например, пользователь с заданным ID не найден. NotFound // MaximumAttempts превышение числе разрешенных попуток выполнения одного и того же действия. MaximumAttempts // SubscriptionExpired срок действия "оплаченой" подписки истек. SubscriptionExpired // DownstreamDependencyTimedout время ожидания выполнения запрос к нижестоящему сервису истек. DownstreamDependencyTimedout Unavailable )
Variables ¶
var ( ErrNoLocalizer = New("localizer is no set") ErrNotError = New("not *Error") )
var ( // DefaultCaller is a Valuer that returns then CallInfo where the Log // method was invoked. It can only be used with log.With. DefaultCaller = Caller(DefaultCallDepth) //nolint:gochecknoglobals RuntimeCaller = Caller(RuntimeCallDepth) //nolint:gochecknoglobals HandlerCaller = Caller(HandlerCallDepth) //nolint:gochecknoglobals )
var DefaultMarshaller = &MarshalString{} //nolint:gochecknoglobals
var (
ErrUnknownMarshaller = New("marshaller not set")
)
var (
ErrUnknownType = New("unknown type")
)
Functions ¶
func As ¶
As обнаруживает ошибку err, соответствующую типу target и устанавливает target в найденное значение.
func Caller ¶
Caller returns a Valuer that returns a CallInfo from a specified depth in the callstack. Users will probably want to use DefaultCaller.
Example ¶
package main import ( "fmt" "time" "github.com/ovsinc/errors" ) func someErrWithTimedCall() error { err := errors.NewWith( errors.SetMsg("some call"), errors.AppendContextInfo("call", errors.RuntimeCaller()), errors.AppendContextInfo("duration", time.Second), ) time.Sleep(1 * time.Second) return err } func main() { err := someErrWithTimedCall() fmt.Printf("%s\n", err.Error()) }
Output: {call:example_test.go:306: ExampleCaller(),duration:1s} some call
func Combine ¶
Combine создаст цепочку ошибок из ошибок ...errors. Допускается использование `nil` в аргументах.
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func itsOk() error { return nil } func itsErr(s string) error { return errors.New(s) } func main() { e := errors.Combine( nil, itsOk(), itsErr("one"), itsErr("two"), itsOk(), ) fmt.Println(e) }
Output: the following errors occurred: #1 one #2 two
func CombineWithLog ¶
CombineWithLog как и Combine создаст или дополнит цепочку ошибок err с помощью errs, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
Добавление ошибок в mutierror с логгированием тут изменена функция форматирования вывода -- используется json
package main import ( "log" "os" "github.com/ovsinc/multilog/golog" "github.com/ovsinc/errors" ) func itsOk() error { return nil } func itsErr(s string) error { return errors.New(s) } func main() { errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0)) _ = errors.CombineWithLog( nil, itsOk(), itsErr("one"), itsErr("two"), itsOk(), ) }
Output: ovsinc/errors the following errors occurred: #1 one #2 two
func Contains ¶
Contains проверит есть ли в цепочке целевая ошибка. Допускается в качестве аргумента err указывать одиночную ошибку.
func ContainsByErr ¶ added in v1.3.0
ContainsByErr проверит есть ли в цепочке ошибка. Допускается в качестве аргумента err указывать одиночную ошибку.
func ContainsByID ¶ added in v1.3.0
ContainsByID проверит есть ли в цепочке ошибка с указанным ID. Допускается в качестве аргумента err указывать одиночную ошибку.
func DefaultTranslate ¶ added in v1.3.0
func FindByErr ¶ added in v1.3.0
FindByErr вернет ошибку (*Error) соответсвующую target или nil. Если ошибка не найдена, вернется nil.
func FindByID ¶ added in v1.3.0
FindByID вернет ошибку (*Error) с указанным ID. Если ошибка с указанным ID не найдена, вернется nil.
func GRPCStatusCode ¶ added in v1.3.0
GRPCStatusCode получить gRPC статус из error. * in: error * out: t codes.Code, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение codes.Code, соответсвующее errType. В противном случае возвращается codes.Unknown и false.
func GRPCStatusCodeMessage ¶ added in v1.3.0
GRPCStatusCodeMessage получить gRPC статус из error. * in: error * out: t codes.Code, s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается codes.Unknown, "Unknown", false.
func GetOperation ¶ added in v1.3.0
GetOperation возвращает операцию ошибки. Для НЕ *Error всегда будет "".
func HTTPStatusCode ¶ added in v1.3.0
HTTPStatusCode получить HTTP статус из error. * in: error * out: t int, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение, соответсвующее errType. В противном случае возвращается http.StatusTeapot и false.
func HTTPStatusCodeMessage ¶ added in v1.3.0
HTTPStatusCodeMessage получить HTTP статус из error. * in: error * out: t int, s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается http.StatusTeapot, "Unknown", false.
func Is ¶
Is сообщает, соответствует ли ошибка err target-ошибке. Для multierr будет производится поиск в цепочке.
func Log ¶
Log выполнить логгирование ошибки err с ипользованием логгера l[0]. Если l не указан, то в качестве логгера будет использоваться логгер по-умолчанию.
Example ¶
package main import ( "log" "os" "github.com/ovsinc/multilog/golog" "github.com/ovsinc/errors" ) func main() { errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0)) errors.Log(errors.New("hello world")) }
Output: ovsinc/errors hello world
func StatusMessage ¶ added in v1.3.0
StatusMessage получить строковое описание errType из error. * in: error * out: s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается "Unknown", false.
func Translate ¶ added in v1.3.0
func Translate(e error, l Localizer, tctx *TranslateContext) (string, error)
Translate вернет перевод сообщения ошибки. Если не удастся выполнить перевод, вернет оригинальное сообщение.
Example ¶
package main import ( "fmt" "github.com/BurntSushi/toml" i18n "github.com/nicksnyder/go-i18n/v2/i18n" "golang.org/x/text/language" "github.com/ovsinc/errors" ) func localizePrepare() *i18n.Localizer { bundle := i18n.NewBundle(language.English) bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal) bundle.MustLoadMessageFile("./_examples/translate/testdata/active.ru.toml") return i18n.NewLocalizer(bundle, "es", "ru", "en") } func localTransContext() errors.TranslateContext { var ( unreadEmailCount = 5 name = "John Snow" ) return errors.TranslateContext{ TemplateData: map[string]interface{}{ "Name": name, "PluralCount": unreadEmailCount, }, PluralCount: unreadEmailCount, } } func main() { errEmailsUnreadMsg := localTransContext() localizer := localizePrepare() e1 := errors.NewWith( errors.SetMsg("fallback message"), errors.SetID("ErrEmailsUnreadMsg"), ) errors.DefaultLocalizer = localizePrepare() defer func() { errors.DefaultLocalizer = nil }() msg, _ := errors.Translate(e1, localizer, &errEmailsUnreadMsg) fmt.Println(msg) msg, _ = errors.Translate(e1, nil, &errEmailsUnreadMsg) fmt.Println(msg) eunknown := errors.NewWith( errors.SetMsg("fallback unknown message"), errors.SetID("ErrUnknownErrorMsg"), ) fmt.Printf("%+s\n", eunknown) }
Output: У John Snow имеется 5 непрочитанных сообщений. У John Snow имеется 5 непрочитанных сообщений. Неизвестная ошибка
func Wrap ¶
Wrap обернет ошибку `left` ошибкой `right`, получив цепочку. Допускается использование `nil` в одном из аргументов.
Example ¶
package main import ( "fmt" stderrors "errors" "github.com/ovsinc/errors" ) func someFuncWithErr() error { return errors.NewWith( errors.SetMsg("connection error"), errors.SetContextInfo(errors.CtxKV{{"hello", "world"}}), errors.SetOperation("write"), errors.SetID("someid"), ) } func someFuncWithErr2() error { return errors.New( "connection error", ) } func main() { e := stderrors.New("hello world") err := someFuncWithErr() err = errors.Wrap(err, someFuncWithErr2()) err = errors.Wrap(err, e) fmt.Printf("%v", err) oneErr := errors.FindByID(err, "someid") fmt.Printf( "err with id 'someid': %v; id: %s; op: %s\n", oneErr, errors.GetID(oneErr), errors.GetOperation(oneErr), ) fmt.Println(errors.FindByErr(err, e)) }
Output: the following errors occurred: #1 [write] {hello:world} connection error #2 connection error #3 hello world err with id 'someid': [write] {hello:world} connection error; id: someid; op: write hello world
func WrapWithLog ¶
WrapWithLog обернет ошибку olderr в err и вернет цепочку, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Types ¶
type CtxKV ¶ added in v1.3.0
type CtxKV []struct { Key string Value interface{} }
CtxKV slice key-value контекста ошибки.
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error структура кастомной ошибки.
func Cast ¶
Cast преобразует тип error в *Error Если error не соответствует *Error, то будет создан *Error с сообщением err.Error(). Для err == nil, вернется nil.
func DownstreamDependencyTimedoutErr ¶ added in v1.3.0
Конструктор *Error c типом DownstreamDependencyTimedout. * s string -- сообщение ошибки. ** *Error
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func main() { e := errors.DownstreamDependencyTimedoutErr("hello") fmt.Printf("%q\n", e) fmt.Printf("%v\n", e) }
Output: id: operation: error_type:DownstreamDependencyTimedout context_info: message:hello (DownstreamDependencyTimedout) hello
func DownstreamDependencyTimedoutErrWith ¶ added in v1.3.0
Конструктор *Error c типом DownstreamDependencyTimedout. * ops ...Options -- параметризация через функции-парметры. ** *Error
func DuplicateErr ¶ added in v1.3.0
Конструктор *Error c типом Duplicate. * s string -- сообщение ошибки. ** *Error
func DuplicateErrWith ¶ added in v1.3.0
Конструктор *Error c типом Duplicate. * ops ...Options -- параметризация через функции-парметры. ** *Error
func EmptyErr ¶ added in v1.3.0
Конструктор *Error c типом Empty. * s string -- сообщение ошибки. ** *Error
func EmptyErrWith ¶ added in v1.3.0
Конструктор *Error c типом Empty. * ops ...Options -- параметризация через функции-парметры. ** *Error
func InputBodyErr ¶ added in v1.3.0
Конструктор *Error c типом InputBody. * s string -- сообщение ошибки. ** *Error
func InputBodyErrWith ¶ added in v1.3.0
Конструктор *Error c типом InputBody. * ops ...Options -- параметризация через функции-парметры. ** *Error
func IternalErr ¶ added in v1.3.0
Конструктор *Error c типом Internal. * s string -- сообщение ошибки. ** *Error
func IternalErrWith ¶ added in v1.3.0
Конструктор *Error c типом Internal. * ops ...Options -- параметризация через функции-парметры. ** *Error
func MaximumAttemptsErr ¶ added in v1.3.0
Конструктор *Error c типом MaximumAttempts. * s string -- сообщение ошибки. ** *Error
func MaximumAttemptsErrWith ¶ added in v1.3.0
Конструктор *Error c типом MaximumAttempts. * ops ...Options -- параметризация через функции-парметры. ** *Error
func New ¶
func New(i interface{}) *Error
New конструктор *Error. Аргумент используется для указания сообщения. * In: interface{} Поддерживаемые варианты для NewWith(SetMsg(msg)): string, *Error -> as is error -> Error() interface{ String() string } -> String() func() string -> f() * Out: *Error
** *Error
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func main() { e := errors.New("hello world") fmt.Println(e.Error()) }
Output: hello world
func NewLog ¶ added in v1.3.0
func NewLog(i interface{}) *Error
NewLog конструктор *Error, как и New, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
package main import ( "log" "os" "github.com/ovsinc/multilog/golog" "github.com/ovsinc/errors" ) func main() { errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0)) _ = errors.NewLog("hello world") }
Output: ovsinc/errors hello world
func NewWith ¶ added in v1.3.0
NewWith конструктор на необязательных параметрах * ops ...Options -- параметризация через функции-парметры. См. options.go
** *Error
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func main() { e := errors.NewWith( errors.SetID("myid"), errors.SetMsg("hello"), errors.AppendContextInfo( "hello", []struct{ k, v interface{} }{{"1", 1}, {"10", 11}}, ), errors.AppendContextInfo("Joe", "Dow"), errors.SetOperation("test op"), errors.SetErrorType(errors.InputBody), ) fmt.Printf("%q\n", e) fmt.Printf("%v\n", e) fmt.Printf("%c\n", e) fmt.Printf("%t\n", e) fmt.Printf("%o\n", e) fmt.Printf("%s\n", e) fmt.Printf("%j\n", e) fmt.Printf("%f\n", e) }
Output: id:myid operation:test op error_type:InputBody context_info:hello:[{1 1} {10 11}],Joe:Dow message:hello (InputBody) [test op] {hello:[{1 1} {10 11}],Joe:Dow} hello hello:[{1 1} {10 11}],Joe:Dow InputBody test op hello {"id":"myid","operation":"test op","error_type":"InputBody","context":{"hello":"[{1 1} {10 11}]","Joe":"Dow"},"msg":"hello"} example_test.go:101: ExampleNewWith()
func NewWithLog ¶
NewWithLog конструктор *Error, как и NewWith, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
package main import ( "log" "os" "github.com/ovsinc/multilog/golog" "github.com/ovsinc/errors" ) func itsOk() error { return nil } func main() { errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0)) _ = errors.Combine( nil, itsOk(), errors.NewLog("one"), errors.NewLog("two"), itsOk(), ) _ = errors.NewLog("three") }
Output: ovsinc/errors one ovsinc/errors two ovsinc/errors three
func NotFoundErr ¶ added in v1.3.0
Конструктор *Error c типом NotFound. * s string -- сообщение ошибки. ** *Error
func NotFoundErrWith ¶ added in v1.3.0
Конструктор *Error c типом NotFound. * ops ...Options -- параметризация через функции-парметры. ** *Error
func SubscriptionExpiredErr ¶ added in v1.3.0
Конструктор *Error c типом SubscriptionExpired. * s string -- сообщение ошибки. ** *Error
func SubscriptionExpiredErrWith ¶ added in v1.3.0
Конструктор *Error c типом SubscriptionExpired. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnauthenticatedErr ¶ added in v1.3.0
Конструктор *Error c типом Unauthenticated. * s string -- сообщение ошибки. ** *Error
func UnauthenticatedErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unauthenticated. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnauthorizedErr ¶ added in v1.3.0
Конструктор *Error c типом Unauthorized. * s string -- сообщение ошибки. ** *Error
func UnauthorizedErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unauthorized. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnavailableErr ¶ added in v1.3.0
Конструктор *Error c типом Unavailable. * s string -- сообщение ошибки. ** *Error
func UnavailableErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unavailable. * ops ...Options -- параметризация через функции-парметры. ** *Error
func ValidationErr ¶ added in v1.3.0
Конструктор *Error c типом Validation. * s string -- сообщение ошибки. ** *Error
func ValidationErrWith ¶ added in v1.3.0
Конструктор *Error c типом Validation. * ops ...Options -- параметризация через функции-парметры. ** *Error
func (*Error) ContextInfo ¶
ContextInfo вернет контекст CtxKV ошибки.
func (*Error) Error ¶
Error возвращает строковое представление ошибки. Метод для реализации интерфейса error. Метод произволит перевод сообщения об ошибки, если localizer != nil. Для идентификации сообщения перевода используется ID ошибки.
func (*Error) Log ¶
Log выполнит логгирование ошибки с ипользованием логгера l[0]. Если l не указан, то в качестве логгера будет использоваться логгер по-умолчанию.
func (*Error) Marshal ¶ added in v1.3.0
func (e *Error) Marshal(fn ...Marshaller) ([]byte, error)
Marshal метод маршалит *Error. * fn ...Marshaller -- необязательный парамет для вызова кастомного маршалера если не указано, используется дефолтный. ** []byte, error
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func main() { e := errors.NewWith( errors.SetID("myid"), errors.SetMsg("hello"), errors.AppendContextInfo( "hello", []struct{ k, v interface{} }{{"1", 1}, {"10", 11}}, ), errors.AppendContextInfo("Joe", "Dow"), errors.SetOperation("test op"), errors.SetErrorType(errors.InputBody), ) buf, _ := e.Marshal(&errors.MarshalJSON{}) fmt.Println(string(buf)) }
Output: {"id":"myid","operation":"test op","error_type":"InputBody","context":{"hello":"[{1 1} {10 11}]","Joe":"Dow"},"msg":"hello"}
func (*Error) WithOptions ¶
WithOptions производит параметризацию *Error с помощью функции-парметры Options. Допускается указывать произвольно количество ops. Возвращается новый экземпляр *Error с переопределением заданных параметров.
Example ¶
package main import ( "fmt" "github.com/ovsinc/errors" ) func main() { e1 := errors.New("hello") e2 := e1.WithOptions( errors.AppendContextInfo("hello", "world"), errors.SetOperation("test op"), ) fmt.Println(e1.Error()) fmt.Println(e2.Error()) }
Output: hello [test op] {hello:world} hello
type IErrType ¶ added in v1.3.0
type IErrType interface { HTTPStatusCode() int GRPCStatusCode() codes.Code Number() int String() string }
func GetErrType ¶ added in v1.3.0
GetErrType получить errType из error. * in: error * out: t errType, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение errType. В противном случае возвращается defaultErrType и false.
func ParseErrType ¶ added in v1.3.0
ParseErrType позволяет получить IErrType по названию.
type Localizer ¶ added in v1.3.0
type Localizer interface {
Localize(*i18n.LocalizeConfig) (string, error)
}
var DefaultLocalizer Localizer //nolint:gochecknoglobals
DefaultLocalizer локализатор по-умолчанию. Для каждой ошибки можно переопределить локализатор.
type Logger ¶ added in v1.3.0
type Logger interface {
Errorf(format string, args ...interface{})
}
Logger используемый в пакете интерфейс логгера.
var DefaultLogger Logger = multilog.DefaultLogger //nolint:gochecknoglobals
DefaultLogger дефолтный логгер в пакете.
type MarshalJSON ¶ added in v1.3.0
type MarshalJSON struct{}
func (*MarshalJSON) Marshal ¶ added in v1.3.0
func (m *MarshalJSON) Marshal(i interface{}) ([]byte, error)
type MarshalString ¶ added in v1.3.0
type MarshalString struct{}
func (*MarshalString) Marshal ¶ added in v1.3.0
func (m *MarshalString) Marshal(i interface{}) ([]byte, error)
type Marshaller ¶ added in v1.3.0
type Multierror ¶
type Multierror interface { Errors() []error Error() string Format(f fmt.State, c rune) Marshal(fn ...Marshaller) ([]byte, error) Len() int Log(l ...Logger) Unwrap() error Last() error }
func CastMultierr ¶ added in v1.3.0
func CastMultierr(err error) (Multierror, bool)
CastMultierr преобразует тип error в *Multierror Если error не соответствует Multierror, то будет создан Multierror с сообщением err.Error(). Для err == nil, вернется nil.
type Options ¶
type Options func(e *Error)
Options опции-параметры ошибки.
func AppendContextInfo ¶
AppendContextInfo, key, val - строки. Добавит в имеющийся CtxKV значение value по ключу key. CtxKV будет инициализирован, если ранее этого не было сделано.
func SetContextInfo ¶
SetContextInfo, CtxKV. Установит контекст.
func SetErrorType ¶
SetErrorType, IErrType (enum). Установит тип.
func SetOperation ¶ added in v1.3.0
SetOperation, строка. Установит имя операции.
type TranslateContext ¶
type TranslateContext struct { // TemplateData - map для замены в шаблоне TemplateData map[string]interface{} // PluralCount признак множественности. // Может иметь значение nil или число. PluralCount interface{} // DefaultMessage сообщение, которое будет использовано при ошибке перевода. DefaultMessage *i18n.Message }
TranslateContext контекст перевода. Не является обязательным для корректного перевода.