summaryrefslogtreecommitdiff
path: root/internal/gtserror/new.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gtserror/new.go')
-rw-r--r--internal/gtserror/new.go22
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