Python 3にはきちんとした機能があります
try:
raise OneException('sorry')
except OneException as e:
# after a failed attempt of mitigation:
raise AnotherException('I give up') from e
コンテキストを失うことなくフォローアップ例外を発生させる構文。私が Python 2 で思いついた最良のアナロジーは次のとおりです。
raise AnotherException((e,'I give up')), None, sys.exc_info()[2]
ここで(e,'')
、元の例外の名前をメッセージに含めるのは醜いハックです。しかし、もっと良い方法はありませんか?