zong-zhe / errors-handling-example

An example of error handling

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
)

About

An example of error handling

License:Apache License 2.0


Languages

Language:Go 100.0%