业务层错误和服务层处理 - 最好的方法?

时间:2011-03-07 14:58:43

标签: asp.net exception-handling business-logic-layer service-layer

我们正在构建一个包含多个图层的大型Web应用程序。为了与业务层进行通信,我们正在使用Web层在需要数据时调用的服务层。不幸的是,似乎如果在业务层中抛出异常,似乎Web端的服务正在包装异常并重新抛出异常。我们正在寻找一种明确的方法来封装错误并将其记录下来,而WCF不会在原始文件周围包含新的异常。

由于

2 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。你提出的解决方案并不是我认为的一半,尽管它不会扩展太多(将业务特定的错误处理与Web相关的代码混合会产生某种耦合)。所有这些都取决于您的体系结构:您可以添加一个表面轻量级的层,将业务错误转换为Web错误,这些错误在Web层错误处理代码中处理。您也可以AoP并拦截呼叫并转换上述层的错误。

答案 1 :(得分:0)

FWIW,我们每个暴露的WCF服务层方法捕获一个System.Exception并将其传递给HandleException帮助程序(我猜这也可能是一个基本服务类方法)

HandleException:

  1. 记录错误
  2. 将异常重新格式化应用于SOAP错误(目前我们正在使用WCF Exception Shielding
  3. 应用任何特定于异常的处理(格式为if (ex is SomeTypeOfException) ...)