Этот плагин позволяет мне использовать их сервисы на нескольких страницах, которые записывают данные в базу данных (он создает таблицы как часть установка/использование).
Я настраиваю две папки: «Службы» и «Контроллеры».
Службы содержат код, необходимый для работы плагина и принятия соответствующих мер. действия, получение данных, обратная запись в базу данных и т. д.
Папка контроллеров содержит код для страниц, посредством которых он вызывает службу из папки служб.
Сервис содержит большую часть кода, обеспечивающего его работу, а контроллер вызывает методы сервиса. Таким образом, по сути контроллер очень легкий, а класс обслуживания тяжелый.
Мой вопрос в сервисе, который у меня есть в блоках try catch, поскольку при возникновении ошибки он удерживает его в блоке try catch и возвращает его обратно контроллеру.
Пример класса обслуживания
`public Customer GetCustomer(int id)
{
Код: Выделить всё
try
{
// Some code to run
}
catch (SomeException someExcep)
{
throw new SomeException ("some error");
}
Код: Выделить всё
{
throw new OtherException ("some other error);
}
Чтобы контроллер вернул ошибку пользователю, у меня есть тот же блок try catch в коде контроллера который затем отображает его обратно пользователю внешнего интерфейса.
`public IActionResult GetCustomer(модель клиента)
{
Код: Выделить всё
try
{
my service.GetCustomer(model.Id}
}
catch (SomeException someExcep)
{
TempData["message"]= "Something went wrong, try xyz";
}
Код: Выделить всё
{
TempData["message"]= "Something else happened, try something else";
}
Приведенный выше код, возможно, не на 100% действителен, но его достаточно, чтобы дать пример имеющейся у меня структуры try catch.
Я чувствую, что дублирую блок try catch между службой и контроллером.
Есть ли способ вернуть ошибку пользователю в лучше или это наиболее подходящий способ? Или даже если класс обслуживания — это всего лишь дополнительный уровень, которого на самом деле не должно быть? Мне просто хотелось бы убедиться, что я использую лучшие практики, где это возможно.
Причина, по которой у меня есть класс обслуживания, заключается в том, что если мне понадобится что-то обновить или изменить в будущем, мне не нужно этого делать. переделать контроллеры.
Я прочитал несколько статей в MSDN и других результатах поиска, но никто толком не освещает эту область.
Подробнее здесь: https://stackoverflow.com/questions/784 ... en-classes
Мобильная версия