Существует ли стандартный способ использования цепочек исключений в Python? Как исключение Java, вызванное '?
Вот какой фон.
У меня есть модуль с одним основным классом исключений 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 может вызывать множество других исключений, поэтому я бы предпочел, чтобы сделать что-то вроде:
try:
v = my_dict[k]
something(v)
except Exception as e:
raise DSError(self, v, e) # Exception chained...
Является ли это стандартным питоническим способом? Я не видел цепочки исключений в других модулях, так как это делается в Python?