【问题标题】:Business Layer errors and Service Layer handling - Best way?业务层错误和服务层处理——最好的方法?
【发布时间】:2011-07-10 10:05:29
【问题描述】:
我们正在构建一个包含多个层的大型网络应用程序。为了与业务层通信,我们使用了一个服务层,Web 层在需要数据时调用该服务层。不幸的是,如果在业务层抛出异常,似乎Web端的服务正在包装异常并重新抛出它们。我们正在寻找一种清晰的方法来封装错误并记录它,而 WCF 不会在原始异常周围包装新的异常。
谢谢
【问题讨论】:
标签:
asp.net
exception-handling
business-logic-layer
service-layer
【解决方案1】:
FWIW,我们每个公开的 WCF 服务层方法都会捕获一个 System.Exception 并将其传递给 HandleException 帮助器(我猜这也可能是一个基本服务类方法)
处理异常:
- 记录错误
- 将异常重新格式化应用于 SOAP 错误(目前我们使用WCF Exception Shielding)
- 应用任何特定于异常的处理(格式为
if (ex is SomeTypeOfException) ...)
【解决方案2】:
有多种方法可以做到这一点。我相信您提出的解决方案还不错,尽管它的规模不大(将业务特定的错误处理与网络相关的代码混合会产生某种耦合)。所有这一切都取决于您的架构:您可以添加一个肤浅的、轻量级的层,将业务错误转换为 Web 错误,并在 Web 层错误处理代码中进行处理。你也可以你 AoP 并拦截调用并为上面的层转换错误。