werr - 错误包装器在Go中为错误类型创建一个包装器
werr - 错误包装器在Go中为错误类型创建一个包装器,可以捕捉文件,行和堆栈被调用的地方。
Go 其它杂项
共13Star
详细介绍
Error Wrapper
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