Merged in feature/semver (pull request #93)
Add semantic versioning to all services * working * Merge branch 'main' of bitbucket.org:aarete/query-orchestration into feature/semver * 1.24 mod * go upgrade * tool * Merge branch 'main' of bitbucket.org:aarete/query-orchestration into feature/semver
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
package stackerr
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
)
|
||||
|
||||
type StackErr struct {
|
||||
cause error
|
||||
stack []byte
|
||||
}
|
||||
|
||||
func NewStackErr(cause error) error {
|
||||
return StackErr{
|
||||
cause: cause,
|
||||
stack: debug.Stack(),
|
||||
}
|
||||
}
|
||||
|
||||
func NewStackErrf(cause error, f string, args ...any) error {
|
||||
msg := fmt.Sprintf(f, args...)
|
||||
cause = fmt.Errorf(msg+": %w", cause)
|
||||
return NewStackErr(cause)
|
||||
}
|
||||
|
||||
func (se StackErr) Error() string {
|
||||
return se.cause.Error()
|
||||
}
|
||||
|
||||
func (se StackErr) Unwrap() error {
|
||||
return se.cause
|
||||
}
|
||||
|
||||
func (se StackErr) Stack() []byte {
|
||||
return se.stack
|
||||
}
|
||||
|
||||
func GetStack(err error) ([]byte, bool) {
|
||||
var s interface {
|
||||
Stack() []byte
|
||||
}
|
||||
if errors.As(err, &s) {
|
||||
return s.Stack(), true
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
Reference in New Issue
Block a user