Как уменьшить количество попыток поймать между классамиC#

Место общения программистов C#
Ответить
Anonymous
 Как уменьшить количество попыток поймать между классами

Сообщение Anonymous »

На моем сайте MVC установлен сторонний плагин.
Этот плагин позволяет мне использовать их сервисы на нескольких страницах, которые записывают данные в базу данных (он создает таблицы как часть установка/использование).
Я настраиваю две папки: «Службы» и «Контроллеры».
Службы содержат код, необходимый для работы плагина и принятия соответствующих мер. действия, получение данных, обратная запись в базу данных и т. д.
Папка контроллеров содержит код для страниц, посредством которых он вызывает службу из папки служб.
Сервис содержит большую часть кода, обеспечивающего его работу, а контроллер вызывает методы сервиса. Таким образом, по сути контроллер очень легкий, а класс обслуживания тяжелый.
Мой вопрос в сервисе, который у меня есть в блоках try catch, поскольку при возникновении ошибки он удерживает его в блоке try catch и возвращает его обратно контроллеру.
Пример класса обслуживания
`public Customer GetCustomer(int id)
{

Код: Выделить всё

try

{

// Some code to run

}

catch (SomeException someExcep)

{

throw new SomeException ("some error");

}
catch (OtherExceptionotherExcep)

Код: Выделить всё

{

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";

}
catch (OtherExceptionotherExcep)

Код: Выделить всё

{

TempData["message"]= "Something else happened, try something else";

}
}`
Приведенный выше код, возможно, не на 100% действителен, но его достаточно, чтобы дать пример имеющейся у меня структуры try catch.
Я чувствую, что дублирую блок try catch между службой и контроллером.
Есть ли способ вернуть ошибку пользователю в лучше или это наиболее подходящий способ? Или даже если класс обслуживания — это всего лишь дополнительный уровень, которого на самом деле не должно быть? Мне просто хотелось бы убедиться, что я использую лучшие практики, где это возможно.
Причина, по которой у меня есть класс обслуживания, заключается в том, что если мне понадобится что-то обновить или изменить в будущем, мне не нужно этого делать. переделать контроллеры.
Я прочитал несколько статей в MSDN и других результатах поиска, но никто толком не освещает эту область.

Подробнее здесь: https://stackoverflow.com/questions/784 ... en-classes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»