Python 3 позволяет вызывать исключения из других исключений, например:
try:
raise CustomException()
except CustomException as e:
try:
raise TypeError() from e
except TypeError as e:
print(type(e.__cause__))
Экземпляр CustomException
хранится в атрибуте __cause__
объекта исключения.Приведенный выше код должен напечатать CustomException
.
Есть ли способ перехватить исходное исключение вместо вновь созданного?
try:
raise CustomException()
except CustomException as e:
try:
raise TypeError() from e
except CustomException as e:
print(type(e)) # should reach here
Переопределение __subclasscheck__
не работает, так как я неУ меня нет доступа к экземпляру, и я не могу указать, что CustomException является подклассом всех классов или причина class .
Есть ли способчтобы заставить Питона думать, что исключение, которое мы ловим, относится к типу __cause__
?