diff options
Diffstat (limited to 'internal/gtserror/new.go')
-rw-r--r-- | internal/gtserror/new.go | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/internal/gtserror/new.go b/internal/gtserror/new.go index bb88d5f6a..c360d3345 100644 --- a/internal/gtserror/new.go +++ b/internal/gtserror/new.go @@ -21,16 +21,34 @@ import ( "net/http" ) -// New returns a new error, prepended with caller function name if gtserror.Caller is enabled. +// New returns a new error, prepended with caller +// function name if gtserror.Caller is enabled. func New(msg string) error { return newAt(3, msg) } -// Newf returns a new formatted error, prepended with caller function name if gtserror.Caller is enabled. +// Newf returns a new formatted error, prepended with +// caller function name if gtserror.Caller is enabled. func Newf(msgf string, args ...any) error { return newfAt(3, msgf, args...) } +// NewfAt returns a new formatted error with the given +// calldepth+1, useful when you want to wrap an error +// from within an anonymous function or utility function, +// but preserve the name in the error of the wrapping +// function that did the calling. +// +// Provide calldepth 2 to prepend only the name of the +// current containing function, 3 to prepend the name +// of the function containing *that* function, and so on. +// +// This function is just exposed for dry-dick optimization +// purposes. Most callers should just call Newf instead. +func NewfAt(calldepth int, msgf string, args ...any) error { + return newfAt(calldepth+1, msgf, args...) +} + // NewResponseError crafts an error from provided HTTP response // including the method, status and body (if any provided). This // will also wrap the returned error using WithStatusCode() and |