added README
This commit is contained in:
parent
4e5775fcfa
commit
9504c8a01b
193
README.md
Normal file
193
README.md
Normal file
@ -0,0 +1,193 @@
|
||||
# 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