В нашей конструкции системы мы следующие слои:Исключения - Пользовательские исключения на каждый слое
Web API -> BusinessLayer -> HelperLayer -> DataLayer - Call hierarchy
Web API является уровнем услуг отдыха, бизнес делает бизнес-операции на субъекте предпринимательской деятельности, помощник делает преобразование данных организация для хозяйствующего субъекта и выборки данных РоКо из базы данных
Как мы обсуждаем стратегию управления исключение из системы, являются следующие два вида:
я предпочитаю, что все ошибки будут распространяться до Web API, порога е мы используем фильтр ошибок для перехвата, журнала ошибок и изменений Context.Response обеспечить дружественное сообщение для конечного пользователя, преимущества то же:
Источника ошибки остается неповрежденным
Мы обрабатываем исключение, когда его требуется
Простой и понятный механизм для обработки
ошибки Что другой набор товарищи по команде предпочитают, мы создаем настраиваемое исключение для каждого уровня, такое как DALException, HelperException, BusinessException, где данный слой генерирует исключение, вызывающий слой обрабатывает его, заполняет внутреннее исключение и, таким образом, продолжает, по своему преимуществу:
- Каждый слой может обеспечить пользовательскую информацию о выпуске/исключения, которые помогли бы в ошибке/исключение абстракций
Для меня проблема с этой конструкции:
- Изменение источника of exceptio п что Nopt хорошая практика
- Ловля исключение без обработки
- Лот дополнительного кода путем добавления попробовать поймать везде, что может повлиять на производительность в моем понимании
только пользу, я вижу, мы можем предоставить конкретные сообщение, но это даже возможно, если мы понимаем базовое исключение ядра и различаем его на основе некоторого кода и, таким образом, предоставляем нестандартное сообщение, например ABC, вместо общего сообщения.
Пожалуйста, разделяю Ваше мнение и дайте мне знать, если уточнение требуется
Почему ярлык java? – GhostCat
В моем понимании это очень общий вопрос дизайна, действительный как для C#, так и для Java, даже когда мой код находится в C# –