Check

Модель исключений и дизайн API

Python Senior Яндекс
Как вы проектируете иерархию пользовательских исключений в библиотеке? Зачем нужен базовый класс исключений и почему нежелательно бросать голый `Exception`?
Ответы
Иерархия исключений
Обычно делают базовый класс исключений библиотеки, наследующийся от `Exception`: ```python class MyLibError(Exception): pass class ConfigError(MyLibError): pass class NetworkError(MyLibError): pass ``` Пользователь может перехватить либо конкретную ошибку, либо всё, что относится к библиотеке: `except MyLibError:`. Бросать голый `Exception` плохо, потому что: - сложно отличить ошибки библиотеки от системных; - пользователь может слишком широко перехватывать исключения и скрывать баги. Иерархия ошибок — часть публичного контракта API.