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,'')
- это уродливый хак, чтобы включить имя исходного исключения в сообщение. Но разве нет лучшего способа?
raise
без каких-либо аргументов, но я не думаю, что вы могли бы изменить тип наAnotherException
, если бы вы это сделали. - person Kevin   schedule 05.12.2014reraise()
или что-то в этом роде. Учитывая график выпуска 2.8, вы можете подумать о переходе на 3.x. У вас есть какие-либо зависимости только для 2.x? - person Kevin   schedule 05.12.2014