В моем проекте WebApi 2 я отслеживаю шаблон обслуживания, а также единицу работы и общие шаблоны репозитория.Catch SqlException на уровне контроллера?
Все контроллеры имеют try-catch
, и на всякий случай, если у меня нет глобального IAutofacExceptionFilter
, он поймает необработанные исключения.
Сервисный уровень также имеет обработку исключений. Тем не менее, в репозитории нет обработки исключений, чтобы исключить пузырь до этого первого try-catch
, с которым они сталкиваются.
У меня также есть собственный класс DatabaseException
, который захватывает исключения базы данных EF, брошенные на SaveChanges
, и это отлично работает.
Однако, поскольку проект в настоящее время находится в тяжелом развитии, изменения базы данных происходят так же, как и изменения кода, исключения, такие как SQLException
или EntityCommandExecutionException
, довольно распространены. Я хотел бы поймать подобные исключения и бросить свои собственные DatabaseException
.
Должен ли я использовать эти исключения на уровне хранилища, уровне обслуживания или уровне контроллера?
Повторите как можно ближе к его происхождению. Таким образом, вы все равно сможете отличить, если хотите. – Stefan
Мое предложение состоит в том, чтобы регистрировать исключение на уровне контроллера и выдавать исключение из общего сообщения от контроллера. – Prasanth