Consider approach suggested by defekt to construct and handle errors.
This could be particularly helpful for error handling between micro services when a clear strategy needs to be in place to know wether an error can be retried (producer side), re-queued (consumer side), dropped (consumer side) or added to DLX (consumer side).
See this article for good explanation about correct error handling in Event driven systems.