Абстрактные базовые классы и исключенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Абстрактные базовые классы и исключения

Сообщение Anonymous »

Вопрос

Почему виртуальные подклассы абстрактного исключения, созданного с использованием 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# 11. Статические абстрактные члены в интерфейсах через абстрактные классы?
    Anonymous » » в форуме C#
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous
  • Статические абстрактные члены в интерфейсах через абстрактные классы?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Как использовать абстрактные классы в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как использовать абстрактные классы в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Лучшие практики C++: сериализация и абстрактные классы без доступа к библиотеке
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»