semerr
Package semerr
helps to work with errors in Golang.
Const error
An error that can be defined as const
.
var errMutable error = errors.New("mutable error") // Do not like this?
const errImmutable semerr.Error = "immutable error" // So use this.
TemporaryError checking
The function semerr.IsTemporaryError
checks that error has Temporary method and it returns true.
semerr.IsTemporaryError(context.DeadlineExceeded) // true
semerr.IsTemporaryError(context.Canceled) // false
Errors with meaning
errOriginal := errors.New("some error")
errWrapped := semerr.NewBadRequestError(errOriginal) // The text will be the same.
fmt.Println(errWrapped) // "some error"
fmt.Println(httperr.Code(errWrapped)) // http.StatusBadRequest
fmt.Println(grpcerr.Code(errWrapped)) // codes.InvalidArgument
fmt.Println(errors.Is(err, errOriginal)) // true
fmt.Println(semerr.NewBadRequestError(nil)) // nil
Also see:
err := errors.New("some error")
err = semerr.NewBadRequestError(err)
err = semerr.NewForbiddenError(err)
err = semerr.NewInternalServerError(err)
err = semerr.NewNotFoundError(err)
err = semerr.NewServiceUnavailableError(err)
err = semerr.NewUnauthorizedError(err)
Contributing
Pull requests are welcomed. If you want to add a new meaning error then edit the file internal/cmd/generator/errors.json and generate a new code, for this run make
.