Yeah, this was a primary design goal for the result dictionary. It contains all of this information. pyblish-qml for example does stronger visualisation of the traceback than pyblish-lite through the Terminal and Perspective.
All of that information is provided by the same result dictionary; you could parse this yourself for bespoke use.
# Continuing on from above example
from pyblish_qml.rpc.formatting import format_error
context = util.publish()
error = context.data["results"]["error"]
dictionary_of_information = format_error(error)
I haven't considered using those for exceptions,
log.error is actually reserved for use through a plug-ins.
Would it be possible to elaborate on the benefits you see in using this for exceptions?