Skip to content
/ errors Public

Adds levels, codes, stack trace, and custom info to `error`s in Go (golang)

License

Notifications You must be signed in to change notification settings

agext/errors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extended errors package for Go (golang)

Release GoDoc  Build Status Coverage Status Go Report Card

This is a drop-in replacement for the standard Go package with the same name, providing all the standard functionality as well as additional features.

Project Status

v1.0.1 Stable: Guaranteed no breaking changes to the API in future v1.x releases. Probably safe to use in production, though provided on "AS IS" basis.

This package is being actively maintained. If you encounter any problems or have any suggestions for improvement, please open an issue. Pull requests are welcome.

Overview

When you need to retain more information about an error message than a single string allows, just substitute this package for the one in the standard library.

The New function still accepts a single string as argument, so no code will be broken. Where you need to include additional information, you can provide it to New in a Desc structure instead of the string, or you can add it to the error message using one of its setter methods.

The additional information can be used for smarter error handling and logging:

  • Level differentiates between warnings, regular errors, panics, and fatal errors;
  • Code allows custom classification and prioritizing, by using ranges or bit-level masks;
  • Info offers a store for arbitrary data and messages, besides the main error Text; the special string "debug.stack", if present as an element in the Info slice, is automatically replaced by a stack trace at the point the error message has been created.

Installation

go get github.com/agext/errors

License

Package errors is released under the Apache 2.0 license. See the LICENSE file for details.