summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--util/vizerror/vizerror.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/util/vizerror/vizerror.go b/util/vizerror/vizerror.go
index 158786494..8f864f09f 100644
--- a/util/vizerror/vizerror.go
+++ b/util/vizerror/vizerror.go
@@ -48,3 +48,21 @@ func As(err error) (e Error, ok bool) {
ok = errors.As(err, &e)
return
}
+
+// ErrorWithInternal is a tuple of a user-visible error along with
+// an internal error that should not be shown to users.
+type ErrorWithInternal struct {
+ UserVisibleErr Error // user-visible half
+ InternalErr error // internal error not to be shown to users
+}
+
+func (e ErrorWithInternal) Error() string {
+ return e.UserVisibleErr.Error()
+}
+
+// WithInternal returns a new ErrorWithInternal combining a user-visible error
+// string and an internal error to pass around for internal logging but not
+// to be shown to end users.
+func WithInternal(visibleError string, internalErr error) error {
+ return ErrorWithInternal{Error{errors.New(visibleError)}, internalErr}
+}