2020-03-19 14:39:06 +01:00
|
|
|
package errors
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ Error = (*CaosError)(nil)
|
|
|
|
|
|
|
|
type CaosError struct {
|
|
|
|
Parent error
|
|
|
|
Message string
|
|
|
|
ID string
|
|
|
|
}
|
|
|
|
|
|
|
|
func ThrowError(parent error, id, message string) error {
|
2020-04-07 18:36:37 +02:00
|
|
|
return CreateCaosError(parent, id, message)
|
2020-03-19 14:39:06 +01:00
|
|
|
}
|
|
|
|
|
2020-04-07 18:36:37 +02:00
|
|
|
func CreateCaosError(parent error, id, message string) *CaosError {
|
2020-03-19 14:39:06 +01:00
|
|
|
return &CaosError{
|
|
|
|
Parent: parent,
|
|
|
|
ID: id,
|
|
|
|
Message: message,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (err *CaosError) Error() string {
|
|
|
|
if err.Parent != nil {
|
|
|
|
return fmt.Sprintf("ID=%s Message=%s Parent=(%v)", err.ID, err.Message, err.Parent)
|
|
|
|
}
|
|
|
|
return fmt.Sprintf("ID=%s Message=%s", err.ID, err.Message)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (err *CaosError) Unwrap() error {
|
|
|
|
return err.GetParent()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (err *CaosError) GetParent() error {
|
|
|
|
return err.Parent
|
|
|
|
}
|
|
|
|
|
|
|
|
func (err *CaosError) GetMessage() string {
|
|
|
|
return err.Message
|
|
|
|
}
|
|
|
|
|
|
|
|
func (err *CaosError) GetID() string {
|
|
|
|
return err.ID
|
|
|
|
}
|
2020-04-28 16:01:00 +02:00
|
|
|
|
|
|
|
func (err *CaosError) Is(target error) bool {
|
|
|
|
_, ok := target.(*CaosError)
|
|
|
|
return ok
|
|
|
|
}
|