added README
This commit is contained in:
		
							
								
								
									
										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
 | 
			
		||||
```
 | 
			
		||||
		Reference in New Issue
	
	Block a user