Package semerr
helps to work with errors in Golang.
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.
The function semerr.IsTemporaryError
checks that error has Temporary
method and it returns true.
semerr.IsTemporaryError(context.DeadlineExceeded) // true
semerr.IsTemporaryError(context.Canceled) // false
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.NewConflictError(err)
err = semerr.NewForbiddenError(err)
err = semerr.NewInternalServerError(err)
err = semerr.NewNotFoundError(err)
err = semerr.NewRequestEntityTooLargeError(err)
err = semerr.NewServiceUnavailableError(err)
err = semerr.NewUnauthorizedError(err)
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
.