Рассмотрим этот фрагмент:
all_errors = [] for i in something: try: do_something_that_throws(i) except Exception as e # what I know I can do: raise MyCustomException(i) from e # what I actually want: # all_errors.append(MyCustomException(i) from e)
Есть ли способ создать MyCustomException со всеми инициализациями, которые from e делает для меня (установка __cause__ или что-либо еще), но не выбрасывая его
from e
__cause__
AFAIK, нет другого способа, кроме как установить __cause__ вручную.
Но поскольку вы создаете пользовательское исключение, это может быть полезно:
class MyCustomException(Exception): def __init__(self, cause=None) self.__cause__ = cause