package errors import ( "fmt" ) var ( _ {{.ErrorName}} = (*{{.ErrorName}}Error)(nil) _ Error = (*{{.ErrorName}}Error)(nil) ) type {{.ErrorName}} interface { error Is{{.ErrorName}}() } type {{.ErrorName}}Error struct { *CaosError } func Throw{{.ErrorName}}(parent error, id, message string) error { return &{{.ErrorName}}Error{CreateCaosError(parent, id, message)} } func Throw{{.ErrorName}}f(parent error, id, format string, a ...interface{}) error { return Throw{{.ErrorName}}(parent, id, fmt.Sprintf(format, a...)) } func (err *{{.ErrorName}}Error) Is{{.ErrorName}}() {} func Is{{.ErrorName}}(err error) bool { _, ok := err.({{.ErrorName}}) return ok }