Files
2025-04-25 11:20:31 +03:00

73 lines
1.3 KiB
Go

package errors
type UniverseError interface {
Error() string
Type() *UniverseErrorType
Message() string
Cause() error
StackTrace() ErrorStack
GetAny(key interface{}) any
With(key interface{}, value any) UniverseError
Builder() *UniverseErrorBuilder
}
type UniverseErrorImpl struct {
msg string
cause error
t *UniverseErrorType
stack ErrorStack
fields map[interface{}]any
}
func (e *UniverseErrorImpl) Type() *UniverseErrorType {
return e.t
}
func (e *UniverseErrorImpl) StackTrace() ErrorStack {
return e.stack
}
func (e *UniverseErrorImpl) With(field interface{}, value any) UniverseError {
if e.fields == nil {
e.fields = map[interface{}]any{}
}
e.fields[field] = value
return e
}
func (e *UniverseErrorImpl) Builder() *UniverseErrorBuilder {
return &UniverseErrorBuilder{
t: e.t,
message: e.msg,
cause: e.cause,
fields: e.fields,
stack: e.stack,
}
}
func (e *UniverseErrorImpl) Error() string {
return ErrorToString(e)
}
func (e *UniverseErrorImpl) Unwrap() error {
return e.cause
}
func (e *UniverseErrorImpl) Message() string {
return e.msg
}
func (e *UniverseErrorImpl) Cause() error {
return e.cause
}
func (e *UniverseErrorImpl) GetAny(field interface{}) any {
if e.fields == nil {
return nil
}
return e.fields[field]
}