Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/PumpkinSeed/errors
Simple and efficient error package
https://github.com/PumpkinSeed/errors
Last synced: 14 days ago
JSON representation
Simple and efficient error package
- Host: GitHub
- URL: https://github.com/PumpkinSeed/errors
- Owner: PumpkinSeed
- License: apache-2.0
- Created: 2020-01-08T21:12:51.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-31T13:23:10.000Z (over 2 years ago)
- Last Synced: 2024-07-31T20:51:26.747Z (3 months ago)
- Language: Go
- Homepage:
- Size: 17.6 KB
- Stars: 7
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - errors - The most simple error wrapper with awesome performance and minimal memory overhead. (Error Handling / Search and Analytic Databases)
- awesome-go-extra - errors - 01-08T21:12:51Z|2022-03-31T13:23:10Z| (Error Handling / Advanced Console UIs)
README
[![Build Status](https://travis-ci.com/PumpkinSeed/errors.svg?branch=master)](https://travis-ci.com/PumpkinSeed/errors)
[![Go Report Card](https://goreportcard.com/badge/github.com/PumpkinSeed/errors)](https://goreportcard.com/report/github.com/PumpkinSeed/errors)
[![Documentation](https://godoc.org/github.com/PumpkinSeed/errors?status.svg)](http://godoc.org/github.com/PumpkinSeed/errors)
[![Gocover](http://gocover.io/_badge/github.com/PumpkinSeed/errors)](http://gocover.io/github.com/PumpkinSeed/errors)# Errors
Simple error package for Go with minimal allocation and high performance. Optimized to keep error on function stack.
### Motivation
I found out that the available error packages too complex for the simple purpose or not achieve the simple goal.
### Purpose & Goal
Maintain an error chain (some kind of list of errors), and let the system to check whether the error's type caused the actual error or not.
### Usage
```go
package mainimport (
stderrors "errors""github.com/PumpkinSeed/errors"
)var ErrGlobal = errors.New("global err")
var ErrGlobal2 = errors.New("global err 2")
var ErrNotUsed = errors.New("not used err")func main() {
err := f3()
stderrors.Is(err, ErrGlobal) // true
stderrors.Is(err, ErrGlobal2) // true
stderrors.Is(err, ErrNotUsed) // falseprintln(err.Error()) // "global err 2: global err: string1"
}func f1() error {
return errors.New("string1")
}func f2() error {
return errors.Wrap(f1(), ErrGlobal)
}func f3() error {
return errors.Wrap(f2(), ErrGlobal2)
}
```