Categorygithub.com/jekaspekas/errors
modulepackage
1.0.1
Repository: https://github.com/jekaspekas/errors.git
Documentation: pkg.go.dev

# README

Errors example

Just an example of how I build errors with type and context just exporting an error type.

Handling errors is hard, because there is some contextual information we want to save.

Besides that, errors can be created at every layer of an application. Given that we want to handle this exporting the minimum types possible.

In this example I wrapped the library from https://github.com/pkg/errors, extending the functionalities.

Creating a typed errors is as easy:

  errors.BadRequest.New("error parsing the input information")

You can create an untyped error as easy as:

  errors.New("an untyped error")

Adding a new context to an existing error:

  errors.AddContext(err, "field", "message")

In the top layer when you decide to log or return a web response:

  errors.GetType(err) == errors.BadRequest // true
  errors.GetContext(err) // map[string]string{"field": "field", "message": "message"}

To add new error type is just adding a new constant to errors

const (
	NoType = ErrorType(iota)
	BadRequest
	NotFound
  //ADD here
)

# Functions

AddErrorContext adds a context to an error.
Cause gives the original error.
GetErrorContext returns the error context.
GetType returns the error type.
New creates a no type error.
Newf creates a no type error with formatted message.
Wrap an error with a string.
Wrapf an error with format string.

# Constants

AccessDenied error.
AlreadyExists error.
BadRequest error.
Exceeded error.
InsufficientFunds error.
NotExists error.
NoType error.

# Type aliases

ErrorType is the type of an error.