Совет по сообщению об ошибках NHibernate - PullRequest
0 голосов
/ 31 марта 2009

Это не столько проблема, сколько совет по лучшей практике. Я пишу приложение ASP.Net MVC, и в моем DAL я использую NHibernate, но что вы делаете, если в вашем DAL выдается исключение?

Вы ловите исключение в DAL, регистрируете ошибку и затем повторно генерируете исключение? Вы даже не пытаетесь отловить исключения и использовать метод Application_Error () в global.asax как универсальный перехват всех? Вы ловите исключение, регистрируете его и возвращаете bool на контроллер, указывающий на успех или неудачу, или вы делаете что-то совершенно другое?

Исходя из этого, как вы справляетесь с информированием пользователей? Вы показываете типичную страницу типа «Произошла ошибка - пожалуйста, попробуйте еще раз» или вы показываете более информативную ошибку?

1 Ответ

1 голос
/ 01 апреля 2009

Это как раз один из тех вопросов «это зависит». Вот что я делаю:

  • Обрабатывать все исключения в Application_Error (или аналогичном расположении, похожем на приемник)
  • Если исключение является основой для бизнес-логики - скажем, не может быть дубликатов, просто поймайте его и действуйте по нему.
  • Если это исключение инфраструктуры, и есть большая вероятность, что вы можете исправить его, повторив попытку - обработайте его в DAL.
  • Распространение информации о конкретных исключениях для пользователя вряд ли принесет какую-либо выгоду, поскольку обычно пользователь ничего не может с этим поделать. Таким образом, общее сообщение об ошибке обычно делает.
  • Все непредвиденные и выбранные ожидаемые исключения должны регистрироваться с как можно большим количеством информации. Также желательно, чтобы вы получили письмо с информацией об исключении.

Теперь специально для NHibernate - если NH выдает исключение, рекомендуется закрыть и сбросить текущую активную ISession и просто потерпеть неудачу. Поскольку сеанс может находиться в неизвестном / несовместимом состоянии, и попытка воскресения может принести больше вреда, чем пользы.

Очевидно, в зависимости от масштаба и типа вашего приложения и количества различных систем / программистов / и т. Д. Вы действительно можете сами заняться лесозаготовкой.

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