3层应用程序的异常捕获最佳实践

时间:2011-09-09 06:35:57

标签: c# exception

我有一个以下3层的WCF:

  1. 服务
  2. BLL
  3. DLL。
  4. 有人可以帮我解决一下:

    上述哪一层是在以下场景中捕获和记录异常的最佳位置:

      

    情景1:

         

    DLL上发生异常。

         

    场景:2:

         

    在BLL上发生异常。

    另外,我是否应始终将Try和Catch上的服务的BLL调用包裹起来?

2 个答案:

答案 0 :(得分:4)

这取决于你的系统,但我会在BLL中记录异常。并提醒你“登录”不要抓住!那就是 - 在捕获结束时将进行重新抛出!

我根本没有抓到任何服务 - 这只是为了与客户沟通 - 不需要在其中加入任何逻辑恕我直言。

当然:抓住你的预期的例外情况,抛出它们,然后让它们通过。

例如: 场景1 - 可能捕获SqlExceptions,尝试处理它们,如果没有将它们包装在某些DAL-Exception中并抛出它们。 场景2 - 可能会从第3层捕获DAL-Exceptions,看看你是否可以处理它们或再次包装它们,...

恕我直言,处理,记录和静音各种未预料到的异常(catch (Exception))几乎绝不是一个好主意 - 此后应用程序状态将非常不确定。

答案 1 :(得分:3)

阅读MSDN上有关Microsoft Exception Handling Block

的一些文章

它经历了很多场景,并为您提供了一些关于异常处理策略最佳实践的好主意,无论您是否使用异常处理块,如下图所示。

enter image description here