Skip to content

A way of dealing with Golang errors

License

Notifications You must be signed in to change notification settings

thaithimyduyen/semerr

 
 

Repository files navigation

semerr

Version Go Report Card PkgGoDev

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.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)

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.

About

A way of dealing with Golang errors

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 94.9%
  • Makefile 5.1%