Вопрос
Почему виртуальные подклассы абстрактного исключения, созданного с использованием ABCMeta.register, не совпадают в исключении< /code>?
Справочная информация
Я хочу, чтобы исключения, выдаваемые пакетом, который я использую, преобразуются в MyException, так что код, который импортирует мой модуль, может перехватывать любое исключение, которое мой модуль выдает, кроме MyException: вместо исключения Exception, чтобы они не обязательно должны зависеть от деталей реализации (того факта, что я использую сторонний пакет).
Пример
Для этого я попытался зарегистрировать OtherException как MyException, используя абстрактный базовый класс:
# Tested with python-3.6
from abc import ABC
class MyException(Exception, ABC):
pass
class OtherException(Exception):
"""Other exception I can't change"""
pass
MyException.register(OtherException)
assert issubclass(OtherException, MyException) # passes
try:
raise OtherException("Some OtherException")
except MyException:
print("Caught MyException")
except Exception as e:
print("Caught Exception: {}".format(e))
Утверждение проходит (как и ожидалось), но исключение попадает во второй блок:
Caught Exception: Some OtherException
Подробнее здесь: https://stackoverflow.com/questions/498 ... exceptions
Абстрактные базовые классы и исключения ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
C# 11. Статические абстрактные члены в интерфейсах через абстрактные классы?
Anonymous » » в форуме C# - 0 Ответы
- 49 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Лучшие практики C++: сериализация и абстрактные классы без доступа к библиотеке
Anonymous » » в форуме C++ - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-