Какой должна быть стратегия для обработки исключений sql? - PullRequest
3 голосов
/ 16 октября 2011

У меня есть многоуровневое приложение. DAL -> BAL -> Бизнес-шлюз -> Пользовательский интерфейс. Если в DAL возникает исключение внешнего ключа или уникального ограничения, как мы должны распознать, какое это исключение и какое сообщение об ошибке показать пользователю. Должны ли мы использовать номер ошибки, чтобы определить это.

Второй вопрос: как мы должны распространить эту ошибку на пользовательский интерфейс. Мы думаем передать это исключение в BAL, и BAL инкапсулирует ошибку и вернет ответ (не исключение) в UI. Это правильный подход.

1 Ответ

3 голосов
/ 16 октября 2011

Исключения DAL должны обрабатываться и перебрасываться (как пользовательские исключения) вашим BAL. Который вы должны сериализовать и отправить на ваш интерфейс через используемый вами канал связи.

Вам не нужно показывать точную ошибку пользователю или ее номер, потому что это приведет к плохому пользовательскому опыту. Вы можете просто сказать им, что не можете выполнить операцию в БД. Вы можете записать детали в некоторый файл журнала или журнал событий Windows.

РЕДАКТИРОВАТЬ: SqlException имеет код ошибки, который вы можете проверить в DAL, а затем выдать конкретное исключение на основе этого. Ваш DAL абстрагирует SQL Server как внутреннее хранилище, и поэтому исключения SqlException не должны выходить за пределы вашего DAL. Поэтому в DAL проверьте ErrorCode и сгенерируйте конкретное исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...