Skip to content

New(), Errorf() with Annotators #23

@taxio

Description

@taxio

Now, annotators cannot be added when generating new error.
If we want to generate new error with annotations, we have to do like following.

fail.Wrap(fail.New("hoge"), fail.WithCode(400))

So, I want you to be able to attach annotations with fail.New() and fail.Errorf(), or create another methods.

func New(text string, annotators ...Annotator) error {
	err := &Error{Err: errors.New(text)}
	withStackTrace(0)(err)
	for _, f := range annotators {
		f(err)
	}
	return err
}

func Errorf(format string, args ...interface{}) error {
	var fmtArgs []interface{}
	var annotators []Annotator
	for _, arg := range args {
		antt, ok := arg.(Annotator)
		if ok {
			annotators = append(annotators, antt)
		} else {
			fmtArgs = append(fmtArgs, arg)
		}
	}
	err := &Error{Err: fmt.Errorf(format, fmtArgs...)}
	withStackTrace(0)(err)
	for _, f := range annotators {
		f(err)
	}
	return err
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions