aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/pkg/errors/errors.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pkg/errors/errors.go')
-rw-r--r--vendor/github.com/pkg/errors/errors.go37
1 files changed, 34 insertions, 3 deletions
diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go
index 1c9731a..842ee80 100644
--- a/vendor/github.com/pkg/errors/errors.go
+++ b/vendor/github.com/pkg/errors/errors.go
@@ -14,13 +14,18 @@
// Adding context to an error
//
// The errors.Wrap function returns a new error that adds context to the
-// original error. For example
+// original error by recording a stack trace at the point Wrap is called,
+// and the supplied message. For example
//
// _, err := ioutil.ReadAll(r)
// if err != nil {
// return errors.Wrap(err, "read failed")
// }
//
+// If additional control is required the errors.WithStack and errors.WithMessage
+// functions destructure errors.Wrap into its component operations of annotating
+// an error with a stack trace and an a message, respectively.
+//
// Retrieving the cause of an error
//
// Using errors.Wrap constructs a stack of errors, adding context to the
@@ -134,6 +139,18 @@ func (f *fundamental) Format(s fmt.State, verb rune) {
}
}
+// WithStack annotates err with a stack trace at the point WithStack was called.
+// If err is nil, WithStack returns nil.
+func WithStack(err error) error {
+ if err == nil {
+ return nil
+ }
+ return &withStack{
+ err,
+ callers(),
+ }
+}
+
type withStack struct {
error
*stack
@@ -157,7 +174,8 @@ func (w *withStack) Format(s fmt.State, verb rune) {
}
}
-// Wrap returns an error annotating err with message.
+// Wrap returns an error annotating err with a stack trace
+// at the point Wrap is called, and the supplied message.
// If err is nil, Wrap returns nil.
func Wrap(err error, message string) error {
if err == nil {
@@ -173,7 +191,8 @@ func Wrap(err error, message string) error {
}
}
-// Wrapf returns an error annotating err with the format specifier.
+// Wrapf returns an error annotating err with a stack trace
+// at the point Wrapf is call, and the format specifier.
// If err is nil, Wrapf returns nil.
func Wrapf(err error, format string, args ...interface{}) error {
if err == nil {
@@ -189,6 +208,18 @@ func Wrapf(err error, format string, args ...interface{}) error {
}
}
+// WithMessage annotates err with a new message.
+// If err is nil, WithMessage returns nil.
+func WithMessage(err error, message string) error {
+ if err == nil {
+ return nil
+ }
+ return &withMessage{
+ cause: err,
+ msg: message,
+ }
+}
+
type withMessage struct {
cause error
msg string