Существует ли стандартный способ использования цепочек исключений в Python? Как исключение Java «вызвано»?Цепочки исключений Python
Вот некоторые фон.
У меня есть модуль с одним основным классом исключений DSError
:
class DSError(Exception):
pass
Где-то в этом модуле будет:
try:
v = my_dict[k]
something(v)
except KeyError as e:
raise DSError("no key %s found for %s" % (k, self))
except ValueError as e:
raise DSError("Bad Value %s found for %s" % (v, self))
except DSError as e:
raise DSError("%s raised in %s" % (e, self))
В принципе этот фрагмент должен бросить только DSError и скажите мне, что случилось и Зачем. Дело в том, что блок может попытаться бросить много других исключений, так что я бы предпочел, если я могу сделать что-то вроде:
try:
v = my_dict[k]
something(v)
except Exception as e:
raise DSError(self, v, e) # Exception chained...
Это стандартный вещий путь? Я не видел цепочки исключений в других модулях, так как это делается на Python?
Woah, Спасибо @jamylak! Вы исправили мои кавычки, прежде чем я их увидел :-) – Ayman
Да, и мне пришлось добавить избыточное слово, потому что SO не позволяло мне делать эти * небольшие изменения * :( – jamylak
Что вы хотите, чтобы результат был? t сказать, действительно ли вы хотите трассировку стека исходного исключения или хотите скрыть его и просто иметь собственное исключение с единственным сообщением, которое суммирует исходное исключение? – BrenBarn