В моем проекте WebApi 2 я следую шаблону обслуживания, а также шаблонам единиц работы и общего репозитория.
Все контроллеры имеют try-catch и на случай, если действие отсутствует, у меня есть глобальный фильтр IAutofacExceptionFilter, который перехватывает необработанные исключения.
Уровень обслуживания также имеет обработку исключений. Однако в репозитории нет обработки исключений, поэтому исключения всплывают до первой попытки, с которой они сталкиваются.
У меня также есть собственное исключение DatabaseException. класс, который фиксирует исключения базы данных EF, выданные при SaveChanges, и это работает нормально.
Однако, поскольку проект в настоящее время находится в стадии активной разработки с изменениями базы данных происходящие одновременно с изменениями кода, такие исключения, как SQLException или EntityCommandExecutionException, довольно распространены. Я хотел бы перехватить такого рода исключения и создать собственное исключение DatabaseException.
Должен ли я перехватывать эти исключения на уровне репозитория, уровне сервиса или контроллера? уровень?
Подробнее здесь: https://stackoverflow.com/questions/363 ... ller-level