Skip to content
This repository has been archived by the owner on Nov 13, 2020. It is now read-only.

1gm/errx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

errx

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.

Create an 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()")
}

Add context to an error

// 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()")
}                                                                   

Print with stack trace

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)

Print without stack trace

err := errx.Wrap(errx.Wrap(errors.New("inner"), "middle"), "outer")
log.Printf("%-v", err) // or use %-s

yields

outer: middle: inner

Print top most error

err := errx.Wrap(errx.Wrap(errors.New("inner"), "middle"), "outer")
if e, ok := err.(*errx.Error); ok {
	log.Print(e.Message)
}

yields

outer

About

golang errors with stack traces

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages