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,'')
является уродливым взломом, чтобы иметь исходное имя исключения, включенное в сообщение. Но нет ли лучшего способа?