parent
9504c8a01b
commit
8011646a74
193
README.md
193
README.md
@ -1,193 +0,0 @@
|
|||||||
# adverr
|
|
||||||
--
|
|
||||||
import "adverr"
|
|
||||||
|
|
||||||
Package adverr implements errors with call stack traces as well as error
|
|
||||||
templates for error equality
|
|
||||||
|
|
||||||
|
|
||||||
Usage examples
|
|
||||||
|
|
||||||
Creating templates:
|
|
||||||
|
|
||||||
var (
|
|
||||||
ErrDoStuffFailed = adverr.NewErrTmpl("ErrDoStuffFailed", "Could'nt do stuff because of %s")
|
|
||||||
)
|
|
||||||
|
|
||||||
Creating independent error (without error template):
|
|
||||||
|
|
||||||
func doStuffWithIndependentErr() error {
|
|
||||||
return adverr.New("Could'nt do stuff")
|
|
||||||
}
|
|
||||||
|
|
||||||
Creating error based on template:
|
|
||||||
|
|
||||||
func doStuff() error {
|
|
||||||
return ErrDoStuffFailed.New("reasons")
|
|
||||||
}
|
|
||||||
|
|
||||||
Printing errors on stderr convieniently:
|
|
||||||
|
|
||||||
Print(myErr)
|
|
||||||
Println(myErr)
|
|
||||||
|
|
||||||
Printing errors on stderr and exit with exitcode:
|
|
||||||
|
|
||||||
Fatal(myErr, 1)
|
|
||||||
Fatalln(myErr, 1)
|
|
||||||
|
|
||||||
Advantages of error templates
|
|
||||||
|
|
||||||
two errors made by the same template will return true when called with errors.Is()
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```go
|
|
||||||
var CallStackLength int = 100
|
|
||||||
```
|
|
||||||
CallStackLength decides how many calls from the call stack should be gathered at
|
|
||||||
most
|
|
||||||
|
|
||||||
```go
|
|
||||||
var (
|
|
||||||
// ErrTmplUsedAsErr is returned from ErrTmpl.Error() because an error template should never be used as an actual error value
|
|
||||||
ErrTmplUsedAsErr = NewErrTmpl("ErrTmplUsedAsErr", "Error template used as error value: %s")
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
var TraceCallStack bool = true
|
|
||||||
```
|
|
||||||
TraceCallStack decides if any call stack traces will be gathered when creating
|
|
||||||
Errors If your application is doing performance-heavy tasks with lots of Error
|
|
||||||
creations, you may consider setting this to false If set to false, all
|
|
||||||
CallTraces in Error will be nil
|
|
||||||
|
|
||||||
#### func Fatal
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Fatal(err error, exitcode int)
|
|
||||||
```
|
|
||||||
Fatal prints the given err to stderr and exits immediately with the given exit
|
|
||||||
code
|
|
||||||
|
|
||||||
#### func Fatalln
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Fatalln(err error, exitcode int)
|
|
||||||
```
|
|
||||||
Fatalln prints the given err to stderr followed by a newline and exits
|
|
||||||
immediately with the given exit code
|
|
||||||
|
|
||||||
#### func Print
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Print(err error)
|
|
||||||
```
|
|
||||||
Print prints the given err to stderr
|
|
||||||
|
|
||||||
#### func Println
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Println(err error)
|
|
||||||
```
|
|
||||||
Println prints the given err to stderr followed by a newline
|
|
||||||
|
|
||||||
#### type CallTrace
|
|
||||||
|
|
||||||
```go
|
|
||||||
type CallTrace struct {
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
CallTrace represents a call stack trace similar to Java's stack trace
|
|
||||||
|
|
||||||
#### func Trace
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Trace(skip int) *CallTrace
|
|
||||||
```
|
|
||||||
Trace returns a new CallTrace starting from this call Use skip to skip the first
|
|
||||||
entries in the trace
|
|
||||||
|
|
||||||
#### func (*CallTrace) String
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (ct *CallTrace) String() string
|
|
||||||
```
|
|
||||||
|
|
||||||
#### type ErrTmpl
|
|
||||||
|
|
||||||
```go
|
|
||||||
type ErrTmpl struct {
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
ErrTmpl is an error template to define equalities between different errors
|
|
||||||
|
|
||||||
#### func NewErrTmpl
|
|
||||||
|
|
||||||
```go
|
|
||||||
func NewErrTmpl(name, format string) *ErrTmpl
|
|
||||||
```
|
|
||||||
NewErrTmpl returns a new error template with the given format string as a
|
|
||||||
predefined error message
|
|
||||||
|
|
||||||
#### func (*ErrTmpl) Error
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (t *ErrTmpl) Error() string
|
|
||||||
```
|
|
||||||
Error implementation just for satisfying the error interface Please dont use
|
|
||||||
ErrTmpls as actual errors
|
|
||||||
|
|
||||||
#### func (*ErrTmpl) New
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (t *ErrTmpl) New(args ...interface{}) *Error
|
|
||||||
```
|
|
||||||
New returns a new Error in which the given values are being formatted into the
|
|
||||||
format string of its template
|
|
||||||
|
|
||||||
#### type Error
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Error struct {
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Error is a wrapper for error with stack trace
|
|
||||||
|
|
||||||
#### func New
|
|
||||||
|
|
||||||
```go
|
|
||||||
func New(msg string) *Error
|
|
||||||
```
|
|
||||||
New returns a new Error with the given message
|
|
||||||
|
|
||||||
#### func Wrap
|
|
||||||
|
|
||||||
```go
|
|
||||||
func Wrap(msg string, cause error) *Error
|
|
||||||
```
|
|
||||||
Wrap returns a new Error with the given message which is caused by cause
|
|
||||||
|
|
||||||
#### func (*Error) Error
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (e *Error) Error() string
|
|
||||||
```
|
|
||||||
|
|
||||||
#### func (*Error) Is
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (e *Error) Is(target error) bool
|
|
||||||
```
|
|
||||||
Is implements the error equality function used by errors.Is() It returns true if
|
|
||||||
the error is the same instance or is created using the same ErrTmpl
|
|
||||||
|
|
||||||
#### func (*Error) Unwrap
|
|
||||||
|
|
||||||
```go
|
|
||||||
func (e *Error) Unwrap() error
|
|
||||||
```
|
|
Loading…
Reference in New Issue
Block a user