diff --git a/exerr/exerr.go b/exerr/exerr.go index 2fe8f42..02887c5 100644 --- a/exerr/exerr.go +++ b/exerr/exerr.go @@ -169,14 +169,32 @@ func (ee *ExErr) ShortLog(evt *zerolog.Event) { // RecursiveMessage returns the message to show // = first error (top-down) that is not wrapping/foreign/empty +// = lowest level error (that is not empty) +// = fallback to self.message func (ee *ExErr) RecursiveMessage() string { + + // ==== [1] ==== first error (top-down) that is not wrapping/foreign/empty + for curr := ee; curr != nil; curr = curr.OriginalError { if curr.Message != "" && curr.Category != CatWrap && curr.Category != CatForeign { return curr.Message } } - // fallback to self + // ==== [2] ==== lowest level error (that is not empty) + + deepestMsg := "" + for curr := ee; curr != nil; curr = curr.OriginalError { + if curr.Message != "" { + deepestMsg = curr.Message + } + } + if deepestMsg != "" { + return deepestMsg + } + + // ==== [3] ==== fallback to self.message + return ee.Message } diff --git a/goextVersion.go b/goextVersion.go index cd28de6..b01b244 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.311" +const GoextVersion = "0.0.312" -const GoextVersionTimestamp = "2023-11-09T11:48:45+0100" +const GoextVersionTimestamp = "2023-11-10T10:16:31+0100"