【问题标题】:Where to throw an exception in layered architecture?在分层架构中哪里抛出异常?
【发布时间】:2011-03-15 06:34:09
【问题描述】:

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

我说的对吗?

谢谢 马可

【问题讨论】:

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


    【解决方案1】:

    如果你不处理 DAL 或 BLL 中的错误,那么它会冒泡直到你发现它。 异常不会被“覆盖”。

    如果您在 DAL 中处理它,那么您将不再有异常。 如果您没有完全处理它,那么由于 DAL 中处理不当的错误,BLL 仍然可能引发另一个异常。

    一般规则是这样的:

    处理特定的错误,不要使用通用的包罗万象。允许任何意外的异常在堆栈中进一步冒泡。

    尝试在您的项目上运行 FxCop,看看您在哪里违反了最佳做法。 http://www.gotdotnet.com/team/fxcop

    【讨论】:

      【解决方案2】:

      您的图书馆代码或代码 由您的更高层使用 应用程序必须始终只抛出 例外,从不担心如何 对付他们。

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-10
        • 2013-02-08
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多