Popularity
1.6
Stable
Activity
0.0
Stable
13
0
3

Programming language: Go
Tags: Miscellaneous    

werr alternatives and similar packages

Based on the "Miscellaneous" category.
Alternatively, view werr alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of werr or a related project?

Add another 'Miscellaneous' Package

README

Error Wrapper

GoDoc Codeship Codecov Go Report Card

Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called.

Installation

go get -u github.com/txgruppi/werr

Why?

I don't like to use panic.

I want my apps to run forever and just output errors to a log.

Usually I write my logs using logger.Printf("%#v", err) but I needed more info related to the error, so I created this package.

Example

package main

import (
    "fmt"
    "os"

    "github.com/txgruppi/werr"
)

func main() {
    file, err := os.Open("/tmp/my-missing-file")
    if err != nil {
        err = werr.Wrap(err)                        // Wrap it
        fmt.Println(err.Error())                    // Return the original error message
        if wrapped, ok := err.(*werr.Wrapper); ok { // Try to convert to `*werr.Wrapper`
            lg, _ := wrapped.Log() // Generate the log message
            fmt.Println(lg)        // Print the log message
        }
    }
    defer file.Close()
}

This code will output something line this:

open /tmp/my-missing-file: no such file or directory
/Users/txgruppi/code/temp/test.go:13 open /tmp/my-missing-file: no such file or directory
goroutine 1 [running]:
github.com/txgruppi/werr.Wrap(0x2208246900, 0x208270300, 0x0, 0x0)
        /Users/txgruppi/code/go/src/github.com/txgruppi/werr/funcs.go:24 +0x153
main.main()
        /Users/txgruppi/code/temp/test.go:13 +0x72

Tests

go get -u -t github.com/txgruppi/werr
cd $GOPATH/src/github.com/txgruppi/werr
go test ./...

License

MIT


*Note that all licence references and agreements mentioned in the werr README section above are relevant to that project's source code only.