Куда бросить исключение в многоуровневой архитектуре? - PullRequest
2 голосов
/ 13 июля 2010

У меня есть приложение, которое предлагает свой бизнес-уровень через сервисный уровень, разработанный с помощью WCF. Я думаю о том, что этот сервисный уровень предлагает такой метод работы, как Create, Update и так далее. Затем эти операции перенаправляют эти вызовы на бизнес-уровень. Вопрос заключается в следующем: предположим, что один из этих вызовов не принимает нулевое входное значение (например: Создать нулевой объект), где лучшее место для выполнения проверки? Мой личный ответ - в обоих местах (услуга и бизнес), так как я могу гарантировать повторное использование бизнес-уровня без использования сервисного уровня и наоборот.

Я прав?

Спасибо Marco

Ответы [ 2 ]

1 голос
/ 13 июля 2010

Код вашей библиотеки или код, который используется верхними слоями в вашем Приложение всегда должно только бросить исключения и никогда не беспокоиться о том, как иметь дело с ними.

Это важно, потому что вы можете использовать эту библиотеку во многих местах для различных целей.

Если на вашем уровне представления приложений вы используете библиотечный код и знаете о возможных исключениях, то поймайте их с помощью try / catch.

0 голосов
/ 13 июля 2010

Если вы не обрабатываете ошибку в DAL или BLL, она всплывает, пока вы ее не поймаете. Исключения не перезаписываются.

Если вы обработали его в DAL, у вас больше нет исключения. Если вы не обработали его полностью, BLL все равно может выдать другое исключение из-за неправильно обработанной ошибки в DAL.

Общее правило звучит так:

Обрабатывать конкретные ошибки и не использовать универсальный универсальный метод. Разрешить любым непредвиденным исключениям пузыриться дальше вверх по стеку.

Попробуйте запустить FxCop в своем проекте, чтобы увидеть, где вы нарушаете лучшие практики. http://www.gotdotnet.com/team/fxcop

...