73 lines
1.3 KiB
Go
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]
|
|
}
|