golang errors with stack traces, based off pkg/errors modified for use within my own projects.
errx implements error utilities which make adding context to errors more developer friendly while also preserving the original error.
// using errx.New
if ok := someOperation(); !ok {
return errx.New("someOperation failed")
}
// using errx.Errorf
if ok := someOperation(); !ok {
return errx.Errorf("%s failed", "someOperation()")
}
// using errx.Wrap
_, err := someOperationThatMayErr()
if err != nil {
return errx.Wrap(err, "someOperationThatMayErr() failed")
}
// using errx.Wrapf
_, err := someOperationThatMayErr()
if err != nil {
return errx.Wrapf(err, "%s failed", "someOperationThatMayErr()")
}
err := errx.Wrap(errx.Wrap(errors.New("inner"), "middle"), "outer")
log.Printf("%v", err) // or use %s
yields
outer: middle: inner
at main.main(examples/main.go:13)
at runtime.main(runtime/proc.go:207)
at runtime.goexit(runtime/asm_amd64.s:2362)
err := errx.Wrap(errx.Wrap(errors.New("inner"), "middle"), "outer")
log.Printf("%-v", err) // or use %-s
yields
outer: middle: inner
err := errx.Wrap(errx.Wrap(errors.New("inner"), "middle"), "outer")
if e, ok := err.(*errx.Error); ok {
log.Print(e.Message)
}
yields
outer