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