Python 3 has the neat
try:
raise OneException('sorry')
except OneException as e:
# after a failed attempt of mitigation:
raise AnotherException('I give up') from e
syntax which allows raising a followup exception without loosing context. The best analogy I could come up with in Python 2 is
raise AnotherException((e,'I give up')), None, sys.exc_info()[2]
where the (e,'')
is an ugly hack to have the original exception's name included in the message. But isn't there a better way?
Instead of using six.raise_from, try to use six.reraise, as explained in this page:
http://python-future.org/compatible_idioms.html
There's a
raise_from
in python-future; simply install itand import to use
UPDATE
The compatibility package six also supports
raise_from
, from version 1.9 (released in 2015). It is used in the same manner as above.