допустим у меня описаны ответы (и нагенерены объекты) для 200 и 404 кодов.
но тут внезапно приходит ответ с 400, для которого ни описания ни объекта нет. вот тут то и неплохо бы исключение сгенерить, поведение то не определено
Можешь вспомнить про языки со статической типизацией, где без всяких "высоких сфер ООП и интерфейсов" очень проблемно возвращать из функции объекты разных типов. Но зато как хорошо в них делать статический анализ кода и всякие плюшки в IDE.
Ну и ещё можешь мне просто поверить на слово, что возвращать разные типы ответа из функции может вылится в попа-боль. Исключение только для None - это ещё более менее просто обрабатываемый случай результата.
Предполагаю что все те разные типы нагенереных объектов, под каждый код ошибки, не достаточно однородны, что бы можно было без лапши из if-чиков работать с ними одним и тем же кодом.