在分层架构中抛出异常的位置?

时间:2010-07-13 11:11:31

标签: wcf architecture exception business-logic service-layer

我有一个应用程序通过使用WCF开发的服务层提供其业务层。 我在想的是:这个服务层提供了诸如Create,Update等操作方法。然后,这些操作将这些调用重新路由到业务层。问题是:假设其中一个调用不接受空输入值(如:创建一个空对象),哪里是执行检查的最佳位置?我的个人答案是在两个地方(服务和业务),因为我可以保证在不使用服务层的情况下重用业务层,反之亦然。

我是对的吗?

由于 马可

2 个答案:

答案 0 :(得分:1)

  

您的图书馆代码或代码   在你的高层使用   应用程序必须始终只抛出   例外,从不担心如何   处理它们。

这很重要,因为您可以在许多地方使用此库用于不同目的。

在您的应用程序表示层中,如果您正在使用库代码并且您知道可能的异常,那么请使用try / catch捕获它们。

答案 1 :(得分:0)

如果你没有处理DAL或BLL中的错误,那么它会一直冒泡直到你抓住它。 例外情况不会被“覆盖”。

如果您在DAL中处理它,那么您不再有例外。 如果你没有完全处理它,那么由于DAL中的错误处理错误,BLL仍然会抛出另一个异常。

一般规则如下:

处理特定错误,不要使用通用的catch-all。允许任何意外的异常进一步向上冒泡。

尝试在项目上运行FxCop,以查看违反最佳做法的位置。 http://www.gotdotnet.com/team/fxcop