я со статусами и прочим http related работаю в слое транспорта, там же перехватываю исключения, всплывающие из репозитория через бизнес-слой, сам бизнес-слой не выкидывает и не перехватывает ничего, только может ошибки бизнес валидации (в нем же формализованные) в декларативном виде вернуть транспорту. Очень удобно и малосвязно получается. И не нужна вся эта клоунада с IOC контейнерами и прочей мастурбацией.
"там же перехватываю исключения, всплывающие из репозитория через бизнес-слой" а как вы определите тип ошибки (и статус код) которая возникла в бизнес-layer? Или через бизнес слой ошибки только со статусом 500?
все, что всплывает к транспорту - это ошибки уровня репозитория, которые не покрыты ограничениями бизнес-логики, а значит, все, что всплывает от хранилища - 500, разумеется.