NHibernate错误报告建议

时间:2009-03-31 13:02:01

标签: nhibernate error-handling

这不是真正的最佳实践建议的问题。我正在编写一个ASP.Net MVC应用程序,在我的DAL中我正在使用NHibernate,但是如果在DAL中抛出异常,你会怎么做?

您是否在DAL中捕获异常,记录错误然后重新抛出异常? 你甚至不试图捕获exeptions并使用global.asax中的Application_Error()方法作为通用catch all吗? 你是否捕获异常日志并将bool返回给控制器指示成功或失败,或者你做了一些完全不同的事情?

从这导致如何处理通知用户?您是否显示通用的“错误发布 - 请再试一次”类型页面,或者您是否显示更多信息错误?

1 个答案:

答案 0 :(得分:1)

这正是“依赖”问题之一。这就是我的工作:

  • 处理Application_Error(或类似类似接收器的位置)中的所有异常
  • 如果异常是业务逻辑的基础 - 比如不能重复,只需抓住它并对其采取行动。
  • 如果是基础架构异常,并且很有可能通过重试来修复它 - 在DAL中处理它。
  • 向用户传播特定的异常信息几乎没有任何好处,因为通常用户无论如何都无法做任何事情。因此,通常的错误消息通常可以做到。
  • 需要使用尽可能多的信息记录所有意外和选定的预期异常。建议您收到包含例外信息的电子邮件。

现在专门针对NHibernate - 如果NH抛出异常,建议你关闭并丢弃当前活动的ISession并且只是失败。因为会话可能处于未知/不一致状态并试图复活它可能弊大于利。

显然取决于您的应用的规模和类型以及各种系统/程序员/等的数量。你真的可以自己处理日志记录。