Уважаемый автор, собственные исключения, или скорее исключения предметной области, будь то базовые исключения языка, фреймворка или бизнес-логики — это прекрасный инструмент.
Но вот пример, который вы привели — это не то чтобы из пальца высосано — это ужасно.
Потому что в современном (sic!) питоне, грамотный разработчик использует аннотацию типами и например mypy, чтобы объявить тип IntFloatDict = Dict[Any, Union[float, int]]
и пользоваться им в нужных местах.
Будучи на вашем месте, я привёл бы пример например исключений Django / DRF — та же DoestNotExist
или интересную ValidationError.
Это перевод, причем в корпоративном блоге. И да, я согласен, что пример ужасен.
Увы, но многие корпоративные блоги только этим и занимаются. Если вы думаете, что я их оправдываю — вам показалось. Я просто имел в виду, что жаловаться автору корпоративного блога на качество перевода — довольно бессмысленное занятие.
Остаётся надеяться, что "Питер", прогнав некоторое количество материала через Хабр, не станет переводить и продавать книги с подобными примерами :)
Потому что в современном (sic!) питоне, грамотный разработчик использует аннотацию типами и например mypy, чтобы объявить тип IntFloatDict = Dict[Any, Union[float, int]] и пользоваться им в нужных местах.
А вот лично я против испольования аннотаций везде и всюду и тем более против объявления их обязательной практикой.
Считаю, что они не питоник и добавляя очень много шума в текст не дают реальной пользы.
В основном — согласен. В небольших скриптах / программах аннотации скорее добавляют шума. Но уже (условно) в коде на 1000 строк хочется большей видимости и контроля над типами.
Но вот городить класс CustomIntFloatDict
— увольте. Уж лучше аннотации.
Как определять собственные классы исключений в Python